Nie wiem czy dokładnie wiem co chcesz zrobić ale próbowałeś skorzystać z funkcji wyszukaj pionowo bądź poziomo (w zależności jak chcesz wyszukiwać potrzebne dane)?
Chodziło mi o to żeby zrobić arkusz bez wykorzystania VBA taki że wklejam dane z jednego źródła, dane z drugiego źródła i np. w 3 arkuszu mam połączenie tych danych. W pierwszym źródle masz dane np.
C2
C53
C21
C12
D31
D81
L213
U15
X13
W drugim źródle masz:
5700123131;jakies info; inne info; C1,C2,C3,C41,C61
106012123;jakieś info; inne info; D2,D3
106123PH; jakieś info; inne info; X13
I teraz wklejam, biorę tekst jako kolumny, rozdzielam po średnikach. Następnie ostatnią powstałą kolumnę tekst jako kolumny i rozdzielam po przecinkach. I teraz w arkuszu np. numer dwa obok X13 chcę formułę która przeszukuje mi wszystkie wiersze tabeli z arkusza1, jeśli znajdzie taką wartość w wierszu to zwróci pierwszą kolumnę tego wiersza.
Generalnie prościej zrobić to przy pomocy VBA, ale skoro chcesz formułami, to może być. Udało mi się uzyskać taki efekt. Dla łatwości na moim serwerze podwieszam plik z formułami. Znajdziesz go tutaj. I czas na opis.
Po wrzuceniu danych do zakładki i rozdzieleniu ich na kolumny na podstawie średników i przecinków, w ostatniej kolumnie tworzymy numerację od 1 do ‘n’, które służyć będą nam za indeks (zakładka Dane ),
W zakładce Wartości w kolumnie B tworzymy formułę: =INDEKS(Dane!A:A;WYSZUKAJ(A1;Dane!B:F);1), która zwraca dane według kryterium, o którym piszesz. W danych formuły WYSZUKAJ(A1;Dane!B:F) zamiast kolumn B:F zaznaczamy cały zakres danych, które będziemy wyszukiwać łącznie z dodatkową kolumną, którą trzeba utworzyć, a o której pisałem w poprzednim punkcie. Reszta argumentów pozostaje bez zmian.
podane rozwiązanie nie działa zbyt dobrze. Ostatnio to zauważyłem. Nie wyszukuje wartości dokładnej tylko przybliżoną. Np. jak w drugiej linijce dodać np. C11 a usunę z pierwszej to i tak dopasuje mi wartość z pierwszej linijki zamiast z drugiej.
Faktycznie, dokładnie tak jest - w przypadku tej funkcji nie da się zdefiniować, by wyszukiwano wartości dokładnie dopasowane. Konieczna jest więc mała modyfikacja formuł. Zamiast funkcji Wyszukaj można zastosować Podaj.Pozycję. Oczywiście generalnie działa ona tylko z jedną tablicą, więc wrzucenie większej ilości kolumn w argumentach uraczy nas wynikiem #N/D!. Dlatego najlepiej poszczególne przeszukiwania zakresów połączyć formułą Jeżeli.Błąd - przeszukujemy najpierw kolumnę B; jeżeli nie znalazł tam wyniku, to ma przeszukać kolumnę C, później D i tak dalej. Ostatecznie formuła dla komórki B1 w zakładce Wartości będzie wyglądać tak:
To zdecydowanie zmienia postać rzeczy. Myślę, że Excel miałby problemy z funkcją, która do kolumn odwołuje się po kilkadziesiąt razy… Nie mówiąc już o pisaniu samej formuły.
Ewentualnie zostaje napisać makro, które będzie przeszukiwać poszczególne zakresy i jeśli nie znajdzie wartości, będzie przeskakiwać do następnej kolumny i rozpoczynać proces poszukiwania na nowo.
Marcin511 na początku pisał o dowolnych ciągach znaków i takie podawał w przykładzie. Dlatego podejrzewam, że nie ma w ciągach liczbowych żadnych zależności. Gdyby były, faktycznie można by zastosować wyszukaj.pionowo i wyszukaj.poziomo - rozwiązanie byłoby gotowe.