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

[Excel] Wyszukiwanie tekstu

06 Wrz 2011 15:53 4569 12
  • Poziom 8  
    Witam,

    Mam problem... W zasadzie to z użytkownikami jednego pliku.

    Wpisują ośmiocyfrowe wartości po przecinku(po przecinku spacja - raz jest raz jej nie ma) w jedną komórkę i za cholerę nie mogę ich przekonać żeby wpisywali je w oddzielnych wierszach...

    Nie wiem jak to wyjaśnić, żebyście zrozumieli o co dokładnie mi chodzi...

    Zacznę więc od tego, że mam dwa arkusze w excelu.
    W jednym są ośmiocyfrowe wartości powpisywane w komórce H1, H3 i H15 (przykład). W H1 trzy, w H3 osiem a w H15 dwie takie wartości.
    Komórki pomiędzy są puste.

    Drugi arkusz to wartości również ośmiocyfrowe ale już w osobnych komórkach, jeden pod drugim.

    Chciałbym aby w tym drugim arkuszu "podświetlały" mi się wartości, które powtarzają się z komórkami z pierwszego arkusza. Ewentualnie w komórce obok jakiś komunikat.

    Problem polega na tym, że chyba excel nie chce kilku wartości liczbowych po przecinkach nie chce łyknąć w wyszukaj.pionowo. Działa funkcja znajdź, lecz gdy podam jako zakres kilka komórek - odmawia współpracy.


    Jak sobie z tym poradzić?

    Z góry dzięki!
  • Pomocny post
    Moderator Programowanie
    Podstaw pusty ciąg pod szukaną liczbę i porównaj długości.

    [Excel] Wyszukiwanie tekstu
  • Poziom 8  
    Działa znakomicie ;) Serdecznie dziękuję.

    Jednej rzeczy jeszcze nie ująłem.

    Mianowicie jak zrobić, aby zawartości komórki D1 szukało w zakresie A1:A4? Oczywiście następnej pozycji, czyli D2 również szukało w zakresie A1:A4 etc etc?

    Da się takie coś z tą formułą zrobić?


    Z góry dzięki
  • Moderator Programowanie
    Połącz teksty, wstawiając jakiś znak Np przecinek.
    Code:
    =JEŻELI(DŁ(A$1&","&A$2&","&A$3&","&A$4)<>DŁ(PODSTAW(A$1&","&A$2&","&A$3&","&A$4;C1;""));"jest"; "nie ma")

    [Excel] Wyszukiwanie tekstu

    Jeśli wierszy nie jest zbyt dużo, to powinno wystarczyć.
  • Poziom 8  
    To niestety się nie sprawdzi. Już teraz potrzebuję A1:A70, a z każdym dniem przybywa po parę pozycji. I tak do końca miesiąca ;)

    Da się to zrobić przez ZNAJDŹ, lecz niestety również trzeba robić A1& itd...

    Chyba, że coś łatwego w VBA?
  • Moderator Programowanie
    Może wystarczy zastosowanie kolumny pomocniczej. Wrzuć jakiś plik z przykładem jako załącznik (bez prowizji).
  • Poziom 8  
    Załączam plik z przyładem jak to mniej więcej wygląda w rzeczywistości.

    W kolumnie A wypisane są liczby w różnych "stylach": po przecinku, i ilościami itd itd.

    W kolumnie C są liczby do sprawdzenie, czy występują w której kolwiek komórce kolumny A.


    A tak na marginesie:
    adamas_nt napisał:
    Połącz teksty, wstawiając jakiś znak Np przecinek.
    Code:
    =JEŻELI(DŁ(A$1&","&A$2&","&A$3&","&A$4)<>DŁ(PODSTAW(A$1&","&A$2&","&A$3&","&A$4;C1;""));"jest"; "nie ma")

    [Excel] Wyszukiwanie tekstu

    Jeśli wierszy nie jest zbyt dużo, to powinno wystarczyć.


    A jakby to wrzucić w pętlę w VBA?
  • Pomocny post
    Moderator Programowanie
    Z takim... zorganizowaniem inaczej danych rzeczywiście pozostaje VBA. Np taka funkcja użytkownika
    Kod: vb
    Zaloguj się, aby zobaczyć kod
    Przetestuj. Wklej do modułu standardowego i używaj jak zwykłej funkcji.

    [Excel] Wyszukiwanie tekstu
  • Poziom 8  
    adamas_nt napisał:
    Z takim... zorganizowaniem inaczej danych rzeczywiście pozostaje VBA


    Chyba chciałeś powiedzieć "z brakiem zorganizowania" :)

    Jesteś wielki :) Działa tak jak powinno tylko mam jedną uwagę.
    Mianowicie:
    Dajmy na to, że w kolumnie A występuje liczba x.
    Liczba jest występuje także w kolumnie C. Funkcja wyrzuca "jest".
    W momencie, gdy kasuję liczbę x z kolumny A, "jest" cały pozostaje niezmiennie, chociaż liczby x już nie ma w kolumnie A. W momencie gdy wpiszę ponownie =czyjest(x), pojawia się "nie ma".
    Czy jest możliwość by wartość zwracana przez funkcję "aktualizowała się" po zmianie w kolumnie A?

    Próbuję zaadaptować kod d
    o moich potrzeb i coś mi nie wychodzi. W oryginalnym pliku obszar przeszukiwania to kolumna H w Sheet1, a wyszukiwane pozycje znajdują się w kolumnie A w Sheet2.
    Zmieniłem
    Code:

    With Sheets("Sheet3")     
    ostW = .Range("a65536").End(xlUp).Row


    Na
    Code:

    With Sheets("Sheet1")     
    ostW = .Range("h65536").End(xlUp).Row


    W tej kopii, którą wrzuciłem obszar wyszukiwania i wyszukiwane pozycje były w jednym arkuszu...
  • Moderator Programowanie
    No niestety, tak już jest z funkcjami tego typu. Pozostaje klawisz [F9] lub procedura zdarzeniowa (przy zmianie) przeliczania w kodzie arkusza.
    Kod: vb
    Zaloguj się, aby zobaczyć kod
  • Poziom 8  
    Ustawię sobie makro "Odświerz" na przycisk :) Załatwi sprawę.
    Jakbyś mógł rzucić okiem powyżej. Update do poprzedniego posta :)
  • Pomocny post
    Moderator Programowanie
    Jeszcze linia z wyszukiwaniem:
    If InStr(1, .Cells(i, 1), rng.Value, vbTextCompare) > 0 Then
    wytłuściłem Nr kolumny. Jeśli H, to 8...
  • Poziom 8  
    Teraz działa tak jak powinno.

    WIELKIE dzięki ! :)