=SZUKAJ.TEKST("apple";A2) (po angielsku SEARCH) zwraca pozycję, od której w A2 zaczyna się apple, licząc od 1, i ignoruje wielkość liter. =ZNAJDŹ("apple";A2) (FIND) robi to samo, ale dopasowuje tylko dokładnie te same litery. Gdy tekstu nie ma, obie zwracają #ARG! (po angielsku #VALUE!; tabele pokazują angielskie nazwy błędów). Tabela pokazuje formuły po angielsku, =SEARCH("apple",A2), ale możesz w niej wpisywać formuły także po polsku, ze średnikami.
| A | B | C | |
|---|---|---|---|
| 1 | Text | FIND("apple") | SEARCH("apple") |
| 2 | Apple pie | #VALUE! | 1 |
| 3 | Green apple | 7 | 7 |
| 4 | Banana bread | #VALUE! | #VALUE! |
#VALUE! Argument ma zły typ, na przykład tekst tam, gdzie powinna być liczba.W polskim Excelu: =ZNAJDŹ("apple";A2)Apple pie zaczyna się wielką literą A, więc ZNAJDŹ nie znajduje dopasowania i zwraca #ARG!, a SZUKAJ.TEKST zwraca 1. W Green apple obie zwracają 7: spacja liczy się jako znak. W Banana bread nie ma apple wcale.
Składnia
=FIND(find_text, within_text, [start_num])
=SEARCH(find_text, within_text, [start_num])
find_text: czego szukasz. Jeden znak albo słowo.within_text: komórka, w której szukasz.start_num: pozycja, od której zaczyna się szukanie, 1, gdy ją pominiesz. Wynik nadal liczy się od pierwszego znaku komórki.
Jeżeli komórka zawiera tekst
Sama pozycja rzadko jest tym, czego chcesz. Zwykle pytanie brzmi: „czy ta komórka zawiera to słowo?”. Pozycja jest liczbą, a brak dopasowania błędem, więc CZY.LICZBA (ISNUMBER) zamienia wynik w PRAWDA albo FAŁSZ:
| A | B | C | |
|---|---|---|---|
| 1 | Note | Contains "late" | Status |
| 2 | Arrived late | TRUE | Check |
| 3 | On time | FALSE | OK |
| 4 | LATE by 2 days | TRUE | Check |
| 5 | Delivered | FALSE | OK |
=CZY.LICZBA(SZUKAJ.TEKST("late";A2))SZUKAJ.TEKST dopasowuje LATE w A4, bo ignoruje wielkość liter. Zauważ, że dopasowałaby też latest albo chocolate: SZUKAJ.TEKST szuka znaków, a nie całych słów. Szukanie " late" ze spacją na początku trochę to zawęża. Aby policzyć, ile komórek zawiera słowo, krótsza jest =LICZ.JEŻELI(A2:A5;"*late*"); zobacz liczenie komórek z tekstem.
| A | B | |
|---|---|---|
| 1 | Subject | Urgent? |
| 2 | URGENT: server down | |
| 3 | Monthly report | |
| 4 | Refund request, urgent |
Twoja kolej: W B2 zwróć PRAWDA, jeśli temat w A2 zawiera słowo urgent pisane dowolnymi literami, a w przeciwnym razie FAŁSZ. Formuła kopiuje się w dół do B4.
Drugie wystąpienie
start_num pozwala zacząć szukanie za pierwszym dopasowaniem. Wstaw jedną funkcję ZNAJDŹ w drugą: wewnętrzna znajduje pierwszy myślnik, a zewnętrzna zaczyna jeden znak dalej.
| A | B | C | |
|---|---|---|---|
| 1 | Code | First dash | Second dash |
| 2 | NYC-2041-B | 4 | 9 |
| 3 | BOSTON-15-AA | 7 | 10 |
=ZNAJDŹ("-";A2;ZNAJDŹ("-";A2)+1)Mając obie pozycje, FRAGMENT.TEKSTU (MID) może wziąć to, co leży między myślnikami: =FRAGMENT.TEKSTU(A2;B2+1;C2-B2-1) zwraca 2041.
| A | B | |
|---|---|---|
| 1 | Position | |
| 2 | ana@coddy.tech |
Twoja kolej: W B2 zwróć pozycję znaku @ w adresie e-mail.
ZNAJDŹ i SZUKAJ.TEKST zwracają #ARG!
#ARG! oznacza tutaj tylko „nie znaleziono”. Zastąp go czymś użytecznym:
| A | B | |
|---|---|---|
| 1 | Position of @ | |
| 2 | ana@coddy.tech | 4 |
| 3 | not an email | 0 |
=JEŻELI.BŁĄD(ZNAJDŹ("@";A2);0)Nie porównuj surowego wyniku z liczbą, jak w =ZNAJDŹ("@";A2)>0: brak dopasowania jest błędem, a porównanie zwraca #ARG! zamiast FAŁSZ. Sprawdzaj wynik funkcją CZY.LICZBA, jak w sekcji powyżej.
Symbole wieloznaczne: tylko SZUKAJ.TEKST
SZUKAJ.TEKST przyjmuje symbole wieloznaczne ? (dowolny jeden znak) i * (dowolny ciąg znaków). ZNAJDŹ traktuje je jak zwykłe znaki. W Excelu:
=SEARCH("b?d","a bad day") returns 3
=SEARCH("2*B","NYC-2041-B") returns 5
=SEARCH("~?","Why?") returns 4, the tilde means a real question mark
=FIND("?","Why?") returns 4, FIND has no wildcards
W polskim Excelu: =SZUKAJ.TEKST("b?d";"a bad day") i =ZNAJDŹ("?";"Why?"). Więcej o *, ? i ~ w funkcjach Excela znajdziesz na stronie o symbolach wieloznacznych.
ZNAJDŹ, SZUKAJ.TEKST i Ctrl+F
| ZNAJDŹ | SZUKAJ.TEKST | Ctrl+F | |
|---|---|---|---|
| Wielkość liter | Musi się zgadzać | Ignorowana | Ignorowana, chyba że zaznaczysz Uwzględnij wielkość liter |
| Symbole wieloznaczne | Nie | ?, *, ~ | ?, *, ~ |
| Brak dopasowania | #ARG! | #ARG! | Komunikat |
| Wynik | Pozycja, przeliczana | Pozycja, przeliczana | Zaznacza komórkę |
Aby jednorazowo znaleźć wartość, Narzędzia główne > Znajdź i zaznacz > Znajdź (Ctrl+F, na Macu Cmd+F) jest szybsze niż formuła. Aby oznaczać albo wyciągać tekst w każdym wierszu i mieć to zawsze aktualne, użyj ZNAJDŹ albo SZUKAJ.TEKST. Wybierz ZNAJDŹ, gdy wielkość liter ma znaczenie (kody produktów, takie jak ab i AB), a SZUKAJ.TEKST do wszystkiego, co wpisują ludzie.
Najczęściej zadawane pytania
Czym różni się ZNAJDŹ od SZUKAJ.TEKST w Excelu?
ZNAJDŹ rozróżnia wielkość liter i nie przyjmuje symboli wieloznacznych. SZUKAJ.TEKST ignoruje wielkość liter i przyjmuje ? i *. =ZNAJDŹ("a";"Apple") daje #ARG!, a =SZUKAJ.TEKST("a";"Apple") daje 1.
Jak wyciągnąć tekst między dwoma myślnikami w Excelu?
Znajdź oba myślniki i weź to, co leży między nimi, funkcją FRAGMENT.TEKSTU: =FRAGMENT.TEKSTU(A2;ZNAJDŹ("-";A2)+1;ZNAJDŹ("-";A2;ZNAJDŹ("-";A2)+1)-ZNAJDŹ("-";A2)-1) zwraca 2041 z NYC-2041-B. W Microsoft 365 krótsza jest =TEKST.PRZED(TEKST.PO(A2;"-");"-").
Dlaczego ZNAJDŹ zwraca #ARG!?
Tekstu nie ma w komórce albo jest zapisany innymi literami (ZNAJDŹ rozróżnia wielkość liter). Obejmij formułę, aby zwracała coś innego: =JEŻELI.BŁĄD(ZNAJDŹ("-";A2);0).
Jak znaleźć drugie wystąpienie znaku?
Zacznij szukać jeden znak za pierwszym dopasowaniem: =ZNAJDŹ("-";A2;ZNAJDŹ("-";A2)+1). Trzeci argument to pozycja, od której zaczyna się szukanie.