Baza wiedzy / Excel
SZUKAJ.TEKST w Excelu: pozycje, wzorce i brak dopasowania
Pokazuję liczenie pozycji, symbole wieloznaczne i flagę obecności tekstu. Wyjaśniam, dlaczego podciąg nie potwierdza całego słowa ani domeny.

Jeżeli chcę sprawdzić, gdzie w opisie zaczyna się dany fragment, używam SZUKAJ.TEKST. Funkcja zwraca pozycję, więc może pomóc zarówno w oznaczeniu pasujących rekordów, jak i w późniejszym wycinaniu tekstu. Ja najpierw ustalam, czy szukam dosłownego zapisu, wzorca czy całego słowa. To trzy różne wymagania.
Składnia i sposób liczenia
Polska funkcja SZUKAJ.TEKST odpowiada angielskiej SEARCH. Dokumentacja Microsoft wymienia Microsoft 365 oraz Excel 2024, 2021, 2019 i 2016. W przykładach PL używam średników, a w EN przecinków; separator w Twoim Excelu zależy od ustawień regionalnych.
=SZUKAJ.TEKST(tekst_szukany;w_tekście;[nr_poz_pocz])
Pierwszy argument mówi, czego szukasz, drugi gdzie. Opcjonalny trzeci argument wskazuje pozycję rozpoczęcia, domyślnie 1. Nawiasów kwadratowych nie wpisujesz do działającej formuły. Wynik jest liczony od początku całego tekstu, także gdy wyszukiwanie zaczyna się później.
Pozycja początkowa jest włączona w przeszukiwanie. Jeżeli na niej stoi szukany znak, może zostać znaleziony właśnie tam. To powód, dla którego =SZUKAJ.TEKST("e";"Excel Spreadsheet";4) daje 4, a nie późniejszą pozycję w kolejnym słowie.
Małe przykłady z poprawnymi pozycjami
Wszystkie poniższe ciągi są syntetyczne. Spacje i znaki interpunkcyjne zajmują pozycje, tak samo jak litery.
| Formuła | Wynik |
|---|---|
=SZUKAJ.TEKST("potężne";"Excel to potężne narzędzie") |
10 |
=SZUKAJ.TEKST(",";"To jest test, sprawdzenie funkcji.") |
13 |
=SZUKAJ.TEKST("e";"Excel Spreadsheet";4) |
4 |
=SZUKAJ.TEKST("e";"Excel to Excel";7) |
10 |
=SZUKAJ.TEKST("Ex?el";"I use Excel daily") |
7 |
W pierwszym tekście Excel zajmuje pozycje 1 do 5, spacja 6, słowo to pozycje 7 i 8, a kolejna spacja 9. Dlatego potężne zaczyna się na 10. Przy ręcznym odczycie łatwo pominąć właśnie spację. W ostatnim przykładzie litera E w Excel jest siódmym znakiem, a pytajnik zastępuje jeden znak wzorca.
Wielkość liter i symbole wieloznaczne
SZUKAJ.TEKST nie rozróżnia wielkości liter. Szukanie excel może więc odnaleźć Excel. Gdy różnica wielkości ma znaczenie, Microsoft wskazuje funkcję ZNAJDŹ jako odpowiednią alternatywę. Nie zmieniam tego zachowania przez dopisanie trzeciego argumentu: on dotyczy miejsca rozpoczęcia.
Funkcja obsługuje ? jako jeden dowolny znak oraz * jako dowolny ciąg znaków. Aby znaleźć dosłowną gwiazdkę lub pytajnik, poprzedzam je tyldą. Formuła =SZUKAJ.TEKST("~*";"AB*CD") daje 3. Tak samo =SZUKAJ.TEKST("~?";"AB?CD") daje 3.
To istotne przy wzorcu pobieranym z innej komórki. Czy wpisana tam gwiazdka ma być operatorem, czy częścią kodu produktu? Tego nie da się wywnioskować z samej formuły. Jeżeli wyszukiwanie ma być dosłowne, trzeba świadomie uwzględnić znaki specjalne i uzgodnić format wejścia.

Sprawdzenie, czy komórka zawiera fragment
Samo SZUKAJ.TEKST zwraca pozycję albo błąd. Jeśli potrzebuję wartości logicznej dla kolumny pomocniczej, korzystam z CZY.LICZBA:
=CZY.LICZBA(SZUKAJ.TEKST("excel";A2))
Dla A2 równego Kurs Excel wynikiem będzie PRAWDA, bo pozycja jest liczbą. Dla Kurs SQL będzie FAŁSZ. Taką flagę można następnie wykorzystać do filtrowania przygotowanej tabeli. Microsoft pokazuje ten sposób łączenia funkcji.
Do rozpoznawania dowolnego błędu służy CZY.BŁĄD, czyli angielskie ISERROR. W tym zadaniu sprawdzanie liczbowego wyniku pozwala jednak napisać krótszą formułę bez ręcznego budowania dwóch etykiet tekstowych.
Pamiętaj o ograniczeniu flagi: FAŁSZ może oznaczać błąd wejścia, a nie tylko brak pasującej frazy. Jeżeli A2 samo zawiera błąd, taka konstrukcja nie zachowa jego odrębnej przyczyny. W imporcie wymagającym kontroli jakości warto najpierw rozdzielić niepoprawne dane od poprawnych opisów bez dopasowania.
Znaleziony fragment nie oznacza całego słowa
Szukanie SQL odnajdzie również ten fragment w MySQL. Funkcja nie rozumie automatycznie granic słów ani znaczenia nazwy narzędzia. Jeżeli etykietujesz kompetencje, taka reguła może dać niechcianą kategorię. Najpierw zdecyduj, jakie otoczenie frazy ma być dopuszczalne.
Podobnie wyszukanie example.test w dowolnej części tekstu nie potwierdza domeny adresu. To może być fragment komentarza albo dłuższej nazwy. Do porównywania domen najpierw wydobywam właściwe pole według uzgodnionej reguły, a potem porównuję cały wynik. Obecność podciągu jest słabszym stwierdzeniem.
Przykład z wydobywaniem tekstu po @ znajdziesz w haśle FRAGMENT.TEKSTU. Zachowuje on założenie jednego separatora; nie udaje pełnego walidatora adresów.
Brak dopasowania i niepoprawny początek
Brak szukanego tekstu powoduje błąd VALUE, czyli #ARG! w polskim Excelu i #VALUE! w angielskim. Taki błąd wystąpi także przy początku mniejszym od 1 lub większym niż długość tekstu. W tych sytuacjach samo wyświetlenie „nie znaleziono” może ukryć błąd argumentu.
Nie zamieniam wyniku na zero bez opisania znaczenia. Poprawne pozycje zaczynają się od 1, ale zero przekazane do kolejnej funkcji może stworzyć nowy problem. Jeśli potrzebuję komunikatu dla odbiorcy, zachowuję obok osobną informację o jakości danych albo stosuję obsługę błędu dopiero na etapie prezentacji.
Ćwiczenie: drugie wystąpienie separatora
Dla tekstu A-B-C pierwsza pozycja myślnika to 2. Wyszukaj następny, zaczynając od pozycji 3. Formuła =SZUKAJ.TEKST("-";"A-B-C";3) powinna wskazać 4. Wynik nadal odnosi się do całego ciągu, nie do fragmentu rozpoczynającego się od trzeciego znaku.
Następnie zamień wejście na A-B i wyjaśnij, dlaczego drugiego separatora nie da się odnaleźć. Dodaj A*B oraz wyszukiwanie dosłownej gwiazdki. To trzy krótkie przypadki, które pozwalają odróżnić pozycję początku, brak dopasowania i wzorzec. Jeśli potrzebujesz porównania uwzględniającego wielkość liter, przejdź do ZNAJDŹ.
Najważniejsze w pigułce
Czy SZUKAJ.TEKST rozróżnia wielkość liter?
Nie. Do wyszukiwania uwzględniającego wielkość liter służy ZNAJDŹ.
Czy początek wyszukiwania jest włączony?
Tak. Znak na wskazanej pozycji może być znaleziony, a wynik nadal liczy pozycję od początku całego tekstu.
Jak znaleźć dosłowną gwiazdkę?
Użyj ~* jako szukanego tekstu. Gwiazdka bez tyldy jest symbolem wieloznacznym; podobnie ~? wyszukuje dosłowny pytajnik.
Przy pracy nad artykułem użyto w zautomatyzowany sposób sztucznej inteligencji. Jeśli też chcesz tak umieć, sprawdź ten projekt.
