Spis treści
Próbujesz zbudować instrukcję IF z tekstem wieloznacznym, ale nie udaje się za każdym razem? Problem nie leży w twojej formule, ale w samej funkcji - Excel IF nie obsługuje znaków wieloznacznych. Istnieje jednak sposób, aby uzyskać go do pracy dla częściowego dopasowania tekstu, a ten samouczek nauczy cię, jak.
Kiedykolwiek chcesz wykonać częściowe lub rozmyte dopasowanie w Excelu, najbardziej oczywistym rozwiązaniem jest użycie znaków wieloznacznych. Ale co, jeśli konkretna funkcja, której potrzebujesz, nie obsługuje znaków wieloznacznych? Niestety, Excel IF jest jedną z takich funkcji. Jest to szczególnie rozczarowujące, biorąc pod uwagę, że inne funkcje "warunkowe", takie jak COUNTIF, SUMIF i AVERAGEIFS, działają z symbolami wieloznacznymi doskonale.
Na szczęście nie jest to przeszkoda, która może zatrzymać kreatywnego użytkownika Excela :) Łącząc IF z innymi funkcjami, możesz zmusić go do oceny częściowego dopasowania i uzyskać miłą alternatywę dla formuły wieloznacznej Excel IF.
Dlaczego funkcja JEŻELI w Excelu z wieloznacznością nie działa
W przykładowej tabeli poniżej załóżmy, że chcesz sprawdzić, czy identyfikatory w pierwszej kolumnie zawierają literę "A". Jeśli znaleziono - wyświetl "Tak" w kolumnie B, jeśli nie - wyświetl "Nie".
Wydaje się, że włączenie tekstu wieloznacznego do testu logicznego byłoby łatwym rozwiązaniem:
=IF(A2="*a*", "Tak", "Nie")
Ale niestety nie działa, formuła zwraca "Nie" dla wszystkich komórek, nawet tych, które zawierają "A":
Dlaczego instrukcja JEŻELI z symbolami wieloznacznymi kończy się niepowodzeniem? Z pozoru Excel nie rozpoznaje symboli wieloznacznych używanych ze znakiem równości lub innymi operatorami logicznymi. Przyglądając się bliżej liście funkcji obsługujących symbole wieloznaczne, można zauważyć, że ich składnia zakłada, że tekst wieloznaczny pojawia się bezpośrednio w argumencie, tak jak w tym przypadku:
=COUNTIF(A2:A10, "*a*")
Excel IF zawiera częściowy tekst
Teraz, gdy znasz powód, dla którego formuła IF z symbolami wieloznacznymi zawodzi, spróbujmy dowiedzieć się, jak sprawić, by działała. W tym celu po prostu osadzimy funkcję akceptującą symbole wieloznaczne w teście logicznym IF, a mianowicie funkcję COUNTIF:
IF(COUNTIF( komórka , "* tekst *"), wartość_if_true, wartość_if_false)Przy takim podejściu IF nie ma problemu ze zrozumieniem symboli wieloznacznych i bezbłędnie identyfikuje komórki zawierające albo "A" albo "a" (ponieważ COUNTIF nie rozróżnia wielkości liter):
=IF(COUNTIF(A2, "*a*"), "Tak", "Nie")
Ta formuła trafia do B2 lub dowolnej innej komórki w wierszu 2, a następnie możesz przeciągnąć ją w dół do tylu komórek, ile potrzebujesz:
Rozwiązanie to może być również wykorzystane do zlokalizowania ciągi o określonym wzorze . Zakładając, że tylko identyfikatory składające się z 2 grup po 2 znaki oddzielone myślnikiem są ważne, możesz użyć łańcucha wieloznacznego "??-??" do ich identyfikacji:
=IF(COUNTIF(A2, "??-??"), "Valid", "")
Jak działa ta formuła:
Do testu logicznego JEŻELI używamy funkcji COUNTIF, która liczy liczbę komórek pasujących do podanego łańcucha wieloznacznego. Ponieważ zakresem kryteriów jest pojedyncza komórka (A2), wynikiem jest zawsze 1 (znaleziono dopasowanie) lub 0 (nie znaleziono dopasowania). Biorąc pod uwagę, że 1 równa się TRUE, a 0 - FALSE, formuła zwraca "Valid" (wartość_jeśli_true), gdy licznik wynosi 1 i pusty ciąg (wartość_jeśli_false), gdycount wynosi 0.
IF ISNUMBER FORMUŁA WYSZUKIWANIA dla częściowych dopasowań
Innym sposobem na zmuszenie Excela IF do pracy dla częściowego dopasowania tekstu jest włączenie do testu logicznego funkcji FIND lub SEARCH. Różnica polega na tym, że FIND rozróżnia wielkość liter, podczas gdy SEARCH nie.
Tak więc, w zależności od tego, czy chcesz traktować małe i duże litery jako te same lub różne znaki, jedna z tych formuł będzie działać traktować:
Nierozróżnianie wielkości liter wzór na częściowe dopasowanie:
IF(ISNUMBER(SEARCH(" tekst ", komórka )), wartość_if_true, wartość_if_false)Rozróżnianie wielkości liter wzór na częściowe dopasowanie:
IF(ISNUMBER(FIND(" tekst ", komórka )), wartość_if_true, wartość_if_false)Ponieważ obie funkcje są zaprojektowane do wykonywania dopasowania typu "komórka zawiera", symbole wieloznaczne nie są naprawdę potrzebne w tym przypadku.
Na przykład, aby wykryć identyfikatory zawierające "A" lub "a", wzór to:
=IF(ISNUMBER(SEARCH("A", A2)), "Tak", "Nie")
Aby wyszukać tylko wielką literę "A" i zignorować "a", formuła to:
=IF(ISNUMBER(FIND("A", A2)), "Tak", "Nie")
W B6 na poniższym zrzucie ekranu można zaobserwować różnicę w wyniku:
Jak działa ta formuła:
W sercu formuły znajduje się połączenie ISNUMBER i SEARCH (lub FIND):
ISNUMBER(SEARCH("A", A2))
Funkcja SEARCH szuka określonego tekstu ("A" w tym przykładzie) i zwraca jego pozycję w łańcuchu w A2. Jeśli tekst nie zostanie znaleziony, zwracany jest błąd #VALUE. Ponieważ zarówno SEARCH, jak i FIND są zaprojektowane do wykonywania dopasowania typu "komórka zawiera", symbole wieloznaczne nie są w tym przypadku naprawdę potrzebne.
Funkcja ISNUMBER konwertuje liczbę na TRUE, a każdą inną wartość łącznie z błędem na FALSE. Wartość logiczna trafia bezpośrednio do testu logicznego IF. W naszym przypadku A2 zawiera "A", więc ISNUMBER zwraca TRUE:
IF(TRUE, "Tak", "Nie")
W rezultacie IF zwraca wartość ustawioną dla wartość_jeśli_true argument, który brzmi "Tak".
Excel IF OR statement with wildcards
Potrzebujesz zidentyfikować komórki, które zawierają jeden z wieloznacznych ciągów tekstowych? W tym przypadku możesz połączyć klasyczne polecenie JEŻELI LUB z omówioną powyżej formułą COUNTIF lub ISNUMBER SEARCH.
Na przykład, aby wyszukać "aa" LUB "bb" w A2 ignorując wielkość liter i zwrócić "Tak", jeśli któreś z nich zostanie znalezione, użyj jednej z tych formuł:
=IF(OR(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2))), "Yes", "")
lub
=IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Tak", "")
Dodanie dwóch funkcji COUNTIF również zadziała. W tym przypadku znak plus działa jak operator OR:
=IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Tak", "")
Zamiast twardego kodowania ciągów wieloznacznych w formule, możesz wprowadzić je w oddzielnych komórkach, powiedzmy D2 i F2, jak pokazano na poniższym zrzucie ekranu. Zauważ, że te odwołania do komórek są zablokowane znakiem $, aby formuła poprawnie skopiowała się do poniższych komórek:
=IF(OR(COUNTIF(A2, "*"&$D$2& "*"), COUNTIF(A2, "*"&$F$2& "*")), "Tak", "")
Powyższe formuły działają dobrze dla 2 częściowych dopasowań, ale jeśli szukasz 3 lub więcej, stałyby się zbyt długie. W tym przypadku, uzasadnione jest, aby podejść do zadania inaczej:
Dostarcz wiele podłańcuchów do funkcji SEARCH w stałej tablicowej, policz zwrócone liczby i sprawdź, czy wynik jest większy od zera (co oznaczałoby, że przynajmniej jeden z podłańcuchów został znaleziony):
=IF(COUNT(SEARCH({"aa", "bb"}, A2))>0, "Tak", "")
W ten sposób uzyskasz dokładnie taki sam efekt przy bardziej kompaktowej formule:
Formuła Excel IF AND z symbolami wieloznacznymi
Kiedy chcesz sprawdzić, czy komórka zawiera dwa lub więcej różnych podciągów, najprostszym sposobem jest użycie funkcji COUNTIFS z symbolami wieloznacznymi dla testu logicznego.
Załóżmy, że chcesz zlokalizować komórki w kolumnie A, które zawierają zarówno "b" I "2". Aby to zrobić, użyj "*b*" i "*2*" dla kryteriów COUNTIFS i A2 dla zakresu kryteriów:
=IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Tak", "")
Innym sposobem jest użycie formuły JEŻELI I wraz z WYSZUKIWARKĄ ISNUMER:
=IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2))), "Yes", "")
Chociaż nie umieszczamy w tej formule żadnych znaków wieloznacznych, działa ona jak wyszukiwanie dwóch ciągów wieloznacznych ("*b*" i "*2*") w tej samej komórce.
Oczywiście nic nie stoi na przeszkodzie, aby wpisać wartości wyszukiwania do wcześniej zdefiniowanych komórek, w naszym przypadku D2 i F2, i dostarczyć odwołania do komórek do formuły:
=IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2))), "Yes", "")
Jeśli wolisz używać bardziej zwartych formuł wszędzie tam, gdzie to możliwe, to być może bardziej spodoba Ci się podejście oparte na stałej tablicowej. Formuła IF COUNT SEARCH jest bardzo podobna do tej z poprzedniego przykładu, ale ponieważ tym razem oba podłańcuchy muszą pojawić się w A2, sprawdzamy, czy liczba jest równa 2:
=IF(COUNT(SEARCH({"b", "2"}, A2))=2, "Tak", "")
To są główne metody używania symboli wieloznacznych w IF statement w Excelu. Jeśli znasz jakieś inne rozwiązania, inni użytkownicy z pewnością docenią, jeśli podzielisz się swoim doświadczeniem w komentarzach. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu w przyszłym tygodniu!
Zeszyt ćwiczeń do pobrania
Przykłady formuł wieloznacznych w Excelu IF (plik .xlsx)