Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Excel automatyczne znalezienie i podmiana ciągu znaków na zadany z tabeli

pannonia75 09 Aug 2012 18:03 3141 7
  • #1
    pannonia75
    Level 10  
    Witam Wszystkich!

    Potrzebuję stworzyć w excelu 2007 funkcję, która by podmieniała w tekscie zawartym w kolumnach ciąg znaków jeżeli definicja podmiany była by zawarta w osobnej tabeli.

    Dokładnie to chodzi o podmianę fragmentu ciągu znaków w słowach obcojęzycznych i zwracanie wyniku w osobnej kolumnie na zasadzie:

    Dla "Abbey = Abi" mamy tabelę:



    bb = b
    ey = i

    Jeżeli dane słowo zawierało by warunek z tabeli, to funkcja znajdowała by i zwracała wynik w postaci "Abi" czyli ["A" - nie zmienione, bo brak defiincji + "b" podstawione zamiast "bb" + "i" podstawione zamiast "ey"

    Cały problem w tym, że mam ponad 100tys haseł, definicji podmian będzie kilkaset i w dodatku moga występować w różnych miejscach słowa, podmiana ciągów znaków ma się powtarzać we wszystkich hasłach - których definicja istnieje. Dodatkowo zwrócony ciąg ma zaczynać się od dużej litery (jeżeli jest podana definicja z małej litery).

    Dodam jeszcze że mam średnią wiedzę na temat Excela i nie znam się na makrach.

    Proszę o wskazówki.
  • Helpful post
    #2
    adamas_nt
    Moderator of Programming
    Np funkcja użytkownika w załączniku. Jeśli to jednorazowa operacja, to przerób na makro.
    Pierwsza wielka:
    Quote:
    Funkcja StrConv zwraca wartość typu String przekonwertowaną wg specyfikacji.

    Składnia funkcji StrConv: StrConv(Łańcuch, Konwersja)

    vbProperCase 3 Konwersja pierwszej litery każdego słowa na dużą
  • #3
    pannonia75
    Level 10  
    Coś nie moge otworzyć w całości i mam komunikat
    Quote:
    This workbook has lost its VBA project, ActiveX controls and any other programmability-related features.


    Quote:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
    <logFileName>error037560_02.xml</logFileName>
    <summary>Errors were detected in file 'C:\Documents and Settings\COMP\My Documents\Downloads\abi(1).xls'</summary>
    - <additionalInfo>
    <info>This workbook has lost its VBA project, ActiveX controls and any other programmability-related features.</info>
    </additionalInfo>
    </recoveryLog>


    Coś muszę włączyć lub wyłączyć?
    O makrach mam tyle pojęcia że wiem że istnieją

    Dodano po 5 [minuty]:

    Docelowo to nie jest operacja jednorazowa, bo dotyczy opracowania słownika dla programu TTS dla urządzenia GPS, tak by nazwy miast i ulic czytało w miarę poprawnie, więc zawsze będzie coś do dodoania.
  • Helpful post
    #4
    adamas_nt
    Moderator of Programming
    pannonia75 wrote:
    Coś muszę włączyć lub wyłączyć?
    Pogrzeb w opcjach bezpieczeństwa, centrum zaufania (zależy od wersji Excela). Włącz makra, zaptaszkuj: "ufaj dostępowi do modelu obiektowego VBA", lub tp.
  • #5
    pannonia75
    Level 10  
    adamas_nt wrote:
    zależy od wersji Excela


    Zarówno Excel jak i windę mam w wer. angielskiej. (win. XP Pro, Excel 2007)

    Dodano po 7 [minuty]:

    Coś znalazłem tu:
    http://office.microsoft.com/pl-pl/excel-help/...031071.aspx?CTT=5&origin=HP010096919#BM12

    doczytam jak to zrobić.

    p.s.
    Wkrótce wyjeżdżam to odezwę się za kilka tyg. i dam znać jak poszło, ale do tematu na pewno powrócę. Już za samo to, że uświadomiłeś mnie że się da to zrobić, to Ci się Kolego "krzynka piwska" należy - dla mnie to krok milowy.

    EDIT 06.09.2012

    To tak ...
    Morduję się z tym nieziemsko, bo już na pamięć wiem gdzie zmienić żeby otwierało makro i nic.
    Dla jasności - "Excell"/Excell options/Trust center/Trust center settings/Macro settings/[]

    i tu mam zaznaczone "Enable all macros" i zaznaczone "trust access to the VBA project, object, model"

    i mimo tego podczas otwarcia wywala
    Quote:
    This workbook has lost its VBA project, ActiveX controls and any other programmability-related features.


    i w logu mam:
    Quote:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
    <logFileName>error027920_01.xml</logFileName>
    <summary>Errors were detected in file 'C:\Documents and Settings\COMP\My Documents\Downloads\abi.xls'</summary>
    - <additionalInfo>
    <info>This workbook has lost its VBA project, ActiveX controls and any other programmability-related features.</info>
    </additionalInfo>
    </recoveryLog>


    Dodatkowo włączyłem zakładkę "Developer"
    i w niej "Visual Basic" "Macros" "Record macro" mam nieaktywne (a powinny być aktywne"

    Plik pobiera mi się w rozszerzeniu .xls a wydaje mi się że powinien być w .xlsm - może tu jest problem?

    Dodano po 11 [minuty]:

    Utworzyłem własny, pusty .xlsm i dalej "Visual Basic" "Macros" "Record macro" mam nieaktywne
  • Helpful post
    #6
    adamas_nt
    Moderator of Programming
    Wygląda tak, jakby VBA nie było w ogóle zainstalowane. Jaka dokładnie wersja Office? Wejdź w panel sterowania >programy, poszukaj wpisu "Microsoft Office...", kliknij ppm i wybierz zmień.

    Sprawdź to:
    Excel automatyczne znalezienie i podmiana ciągu znaków na zadany z tabeli
  • #7
    pannonia75
    Level 10  
    adamas_nt wrote:
    Jaka dokładnie wersja Office?

    Ms Office Enterprise 2007 ENG

    Menu "Zmień" nieco różni się od Twojego
    Jedyna opcja podobna do Twojej w Excellu to "Internet Assistant VBA"

    To jest legal bez pudełka (kupiłem na zasadzie "download").
    Teraz dałem "Uruchom z komputera" wszystko co tylko miało coś wspólnego z VBA - może trafię ;-)
    Na razie się instaluje.

    ... tzn że jak otworzę w/w plik i będzie działała obsługa VBA, to powinno hulać?

    EDIT
    Wygląda na to że działa
    Excel automatyczne znalezienie i podmiana ciągu znaków na zadany z tabeli
    :D

    WIELKIE DZIĘKI KOLEGO!

    To pewnie jeszcze nie będzie koniec. Pobawię się, trochę doczytam i zobaczymy.
  • #8
    pannonia75
    Level 10  
    Mam jeszcze pytanie - jak zrobić żeby w osobnej kolumnie zwracało numery komórek z których makro korzystało przy podmianie - jeżeli więcej niż jedna to oddzielone jakimś znakiem np spacją czy przecinkiem?
    mam już ponad 400 wyjątków i czasem ciężko dojść z którego właściwie korzysta, bo jeżeli użyło więcej niż 1 to czasem jeżeli ich zestawienie jest zgodne z definicją innego (przynajmniej częściowo, to wtedy podmienia ten fragment i tak w kółko.