Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

(VBA) - Szukanie tekstu w innym tekscie

seba78787878 09 Cze 2015 21:00 699 5
  • #1 09 Cze 2015 21:00
    seba78787878
    Poziom 6  

    Witam
    Co dzień utwierdzam się w przekonaniu, że exel z vba to wspaniałe narzędzie. Myślałem, że będe z niego korzystać tylko w pracy ale po kilku już zrealizowanych pomysłach w domu wpadłem na kolejny. Ale pomysł nie zawsze idzie w parze z jego realizacją i dlatego zwracam się do was maniacy vba o pomoc w realizacji mojego pomysłu.

    Przejdę do rzeczy.
    W kolumnie A zaciągam wszystkie pliki (np. mp3) z podanej przeze mnie ścieżki - to makro już mam. W kolumnie B zaciągam wszystkie katalogi (np. z nazwami wykonawców piosenek) z podanej przeze mnie ścieżki - to makro również już mam. I teraz potrzebuję w każdej komórce w kolumnie A poszukać nazw wykonawców z kolumny B po czym jeżeli nazwa wykonawcy z kolumny B wystąpi w komórkach w kolumnie A to wyszukany tekst wstawia w kolumnie C. Tyle że każdą komórkę w kolumnie B trzeba trzeba przeszukać w każdej komóce w kolumnie A.

    Np.:

    Kolumna A /// Kolumna B /// Kolumna C (wynik makra)
    Europe - The Final Countdown /// Toto /// Europe
    Toto - Africa /// Europe /// Toto

    Próbowałem w następujący sposób:

    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    ale to jest początek tego zagadnienia. Potrzebuje zastosować odpowiednie pętle. Jeśli ktoś ma jakiś pomysł proszę o pomoc.

    A po co mi takie makro?
    Po prostu jeśli udało by mi się wyszukać nazwy zespołów w kolumnie B w całych tytułach kolumny A i wyszukany tekst wrzucić w kolumnie C to mógłbym przenieść automatycznie piosenki do określonych katalogów - makro na przeniesienie plików też już posiadam.

    0 5
  • #2 10 Cze 2015 08:55
    NAXIN
    Poziom 22  

    Dzień dobry, jeśli nazwa mp3 jest jednolita (tzn. nazwa spacja myślink spacja tytuł) to można to łatwo oblecieć za pomocą wyszukaj.pionowo, np.:

    Code:
    +---+--------------------------+----------+-------------------------------------------------------------------------+
    
    |   |            A             |    B     |                                    C                                    |
    +---+--------------------------+----------+-------------------------------------------------------------------------+
    | 1 | pierwszy - tytuł1 blabla | piąty    | =WYSZUKAJ.PIONOWO(FRAGMENT.TEKSTU(A1;1;ZNAJDŹ(" - ";A1)-1);B:B;1;FAŁSZ) |
    | 2 | drugi - tytuł2 blabla    | trzeci   | =WYSZUKAJ.PIONOWO(FRAGMENT.TEKSTU(A2;1;ZNAJDŹ(" - ";A2)-1);B:B;1;FAŁSZ) |
    | 3 | trzeci - tytuł3 blabla   | pierwszy | =WYSZUKAJ.PIONOWO(FRAGMENT.TEKSTU(A3;1;ZNAJDŹ(" - ";A3)-1);B:B;1;FAŁSZ) |
    | 4 | czwarty - tytuł4 blabla  | drugi    | =WYSZUKAJ.PIONOWO(FRAGMENT.TEKSTU(A4;1;ZNAJDŹ(" - ";A4)-1);B:B;1;FAŁSZ) |
    | 5 | piąty - tytuł5 blabla    | czwarty  | =WYSZUKAJ.PIONOWO(FRAGMENT.TEKSTU(A5;1;ZNAJDŹ(" - ";A5)-1);B:B;1;FAŁSZ) |
    +---+--------------------------+----------+-------------------------------------------------------------------------+

    0
  • #3 10 Cze 2015 19:55
    seba78787878
    Poziom 6  

    Witam

    Dzięki za propozycję. Jest to jakieś wyjście ale jak Pan zauważył nazwa mp3 musi być jednolita. Jeśli utwór jest wykonywany przez kilku wykonawców i w tytule połączeni są za pomocą "feat." bądź "vs." a szukamy tylko jednego z nich to już nie działa. Lepiej jakby w przypadku wyszukiwania makro zadecydowało w sposób kolejności działania bądź jakiejś innej kolejności i wskazało jednego z nich. Gorzej jak nie wskazuje żadnego. Można co prawda przelecieć Pana sposobem w kilku pętlach najpierw " - " , później " feat." a na końcu "vs." z tym że każdy inny przypadek nie wskaże odpowiedniego wyniku.

    0
  • #4 11 Cze 2015 10:04
    NAXIN
    Poziom 22  

    Cytat:
    makro zadecydowało w sposób kolejności działania bądź jakiejś innej kolejności i wskazało jednego z nich
    :crazyeyes:

    Nie rozumiem tej sentencji/idei ;) Czy to ma się łączyć z wikipedią i porównywać dorobek artystyczny wykonawców po ilości wydanych płyt? ;)

    Jeśli będzie np.: Boys feat. Sting - Jesteś szalona i Sting feat. Boys - You're crazy, to co ma się pojawić w kolumnie C? ;)

    0
  • #5 11 Cze 2015 11:34
    seba78787878
    Poziom 6  

    Przepraszam, rzeczywiście nie napisałem zbyt jasno. Chodziło mi o to że jeśli będzie utwór "Boys feat. Sting - tytuł" to pokaże w kolumnie C albo Boys albo Sting na zasadzie dobrowolnosci (oczywiście jeśli będą występować w kolumnie B). Funkcja wyszukaj pionowo pokaże chyba pierwszego spotkanego. Jeśli będzie szukał tego wykonawcy zawsze do " - " a ci wykonawcy będą osobno w kolumnie B to w takich przypadkach w kolumnie C będzie pusto. Można oczywiście jeszcze przejść z Pana formułą z " feat. " itd ale jak się kiedyś pokaże "featuring" bądź szukany wykonawca będzie za " - " to już go nie pokaże. Ostatecznie będę Pana sposobem szukał najpierw do " - " , później każdy inny przypadek a na końcu to wszystko za " - ". Ale wydaje mi się że można coś łatwiejszego wykombinować.

    0
  • #6 11 Cze 2015 12:10
    adamas_nt
    Moderator Programowanie

    seba78787878 napisał:
    ...mógłbym przenieść automatycznie piosenki do określonych katalogów - makro na przeniesienie plików też już posiadam.
    To makro, w oparciu o InStr, na kolegi miejscu bym rozbudował. W kolumnie C wpisywałbym wyniki (rozumiem, że arkusz ma być czymś w rodzaju rozpiski (filtrowanie/sortowanie).

    Rozważyłbym również możliwość porównywania w drugą stronę. Wtedy jeden plik mógłby być kopiowany do wielu katalogów.

    0