Instrucțiunea Excel IF pentru potrivirea parțială a textului (wildcard)

  • Imparte Asta
Michael Brown

Încercați să construiți o instrucțiune IF cu text cu caractere wildcard, dar eșuează de fiecare dată? Problema nu este în formula dvs., ci în funcția în sine - Excel IF nu acceptă caractere wildcard. Cu toate acestea, există o modalitate de a o face să funcționeze pentru potrivirea parțială a textului, iar acest tutorial vă va învăța cum.

Ori de câte ori doriți să efectuați o potrivire parțială sau neclară în Excel, soluția cea mai evidentă este utilizarea caracterelor wildcard. Dar ce se întâmplă dacă o anumită funcție pe care trebuie să o utilizați nu acceptă caractere wildcard? Din păcate, Excel IF este una dintre aceste funcții. Acest lucru este deosebit de dezamăgitor, având în vedere că alte funcții "condiționale", cum ar fi COUNTIF, SUMIF și AVERAGEIFS, funcționează perfect cu caractere wildcard.

Din fericire, acesta nu este obstacolul care poate opri un utilizator creativ de Excel :) Combinând IF cu alte funcții, îl puteți forța să evalueze o potrivire parțială și să obțineți o alternativă frumoasă la o formulă wildcard IF din Excel.

    De ce funcția Excel IF cu wildcard nu funcționează

    În exemplul de tabel de mai jos, să presupunem că doriți să verificați dacă ID-urile din prima coloană conțin litera "A." Dacă se găsește - afișați "Da" în coloana B, dacă nu - afișați "Nu".

    Se pare că includerea textului wildcard în testul logic ar fi o soluție ușoară:

    =IF(A2="*a*", "Da", "Nu")

    Dar, din păcate, nu funcționează. Formula returnează "Nu" pentru toate celulele, chiar și pentru cele care conțin "A":

    De ce eșuează o instrucțiune IF cu caractere wildcard? După toate aparențele, Excel nu recunoaște caracterele wildcard utilizate cu semnul egal sau cu alți operatori logici. Dacă vă uitați mai atent la lista funcțiilor care acceptă caractere wildcard, veți observa că sintaxa acestora presupune că textul wildcard apare direct într-un argument, astfel:

    =COUNTIF(A2:A10, "*a*")

    Excel IF conține text parțial

    Acum că știți motivul pentru care o formulă IF cu wildcard nu funcționează, să încercăm să ne dăm seama cum să o facem să funcționeze. Pentru aceasta, vom încorpora pur și simplu o funcție care acceptă wildcards în testul logic al IF, și anume funcția COUNTIF:

    IF(COUNTIF( celulă , "* text *"), value_if_true, value_if_false)

    Cu această abordare, IF nu are nicio problemă de înțelegere a caracterelor joker și identifică fără probleme celulele care conțin fie "A", fie "a" (deoarece COUNTIF nu face distincție între majuscule și minuscule):

    =IF(COUNTIF(A2, "*a*"), "Da", "Nu")

    Această formulă merge în B2 sau în orice altă celulă din rândul 2, iar apoi o puteți trage în jos în câte celule doriți:

    Această soluție poate fi utilizată și pentru a localiza șiruri de caractere cu un anumit model Presupunând că numai ID-urile formate din 2 grupuri de 2 caractere separate prin cratimă sunt valide, puteți utiliza șirul de caractere joker "??-???" pentru a le identifica:

    =IF(COUNTIF(A2, "??-???"), "Valid", "")

    Cum funcționează această formulă:

    Pentru testul logic IF, folosim funcția COUNTIF, care numără numărul de celule care corespund șirului de caractere joker specificat. Deoarece intervalul de criterii este o singură celulă (A2), rezultatul este întotdeauna 1 (se găsește o potrivire) sau 0 (nu se găsește o potrivire). Având în vedere că 1 echivalează cu TRUE și 0 cu FALSE, formula returnează "Valid" (valoare_if_true) atunci când numărul este 1 și un șir gol (valoare_if_false) atunci când valoareanumărătoarea este 0.

    Formula de căutare IF ISNUMBER SEARCH pentru potriviri parțiale

    O altă modalitate de a forța Excel IF să funcționeze pentru o potrivire parțială a textului este de a include fie funcția FIND, fie funcția SEARCH în testul logic. Diferența este că FIND este sensibilă la majuscule și minuscule, în timp ce SEARCH nu este.

    Așadar, în funcție de faptul că doriți să tratați caracterele minuscule și majuscule ca fiind identice sau diferite, una dintre aceste formule va funcționa foarte bine:

    Nu ține cont de majuscule și minuscule formula de potrivire parțială:

    IF(ISNUMBER(SEARCH(" text ", celulă ))), value_if_true, value_if_false)

    Sensibil la majuscule și minuscule formula de potrivire parțială:

    IF(ISNUMBER(FIND(" text ", celulă ))), value_if_true, value_if_false)

    Deoarece ambele funcții sunt concepute pentru a efectua o potrivire de tip "celula conține", caracterele joker nu sunt cu adevărat necesare în acest caz.

    De exemplu, pentru a detecta ID-urile care conțin "A" sau "a", formula este:

    =IF(ISNUMBER(SEARCH("A", A2)), "Da", "Nu")

    Pentru a căuta doar un "A" majusculă și a ignora "a", formula este:

    =IF(ISNUMBER(FIND("A", A2)), "Da", "Nu")

    În B6 din captura de ecran de mai jos, puteți observa diferența în rezultat:

    Cum funcționează această formulă:

    În centrul formulei se află o combinație de ISNUMBER și SEARCH (sau FIND):

    ISNUMBER(SEARCH("A", A2))

    Funcția SEARCH caută textul specificat ("A" în acest exemplu) și returnează poziția acestuia în cadrul unui șir de caractere în A2. Dacă textul nu este găsit, se returnează o eroare #VALUE. Deoarece atât SEARCH, cât și FIND sunt concepute pentru a efectua o potrivire de tip "cell contains", nu sunt necesare caractere wildcards în acest caz.

    Funcția ISNUMBER convertește un număr în TRUE și orice altă valoare, inclusiv eroarea, în FALSE. Valoarea logică merge direct la testul logic al IF. În cazul nostru, A2 conține "A", deci ISNUMBER returnează TRUE:

    IF(TRUE, "Da", "Nu")

    Ca rezultat, IF returnează valoarea stabilită pentru value_if_true care este "Da".

    Instrucțiunea Excel IF OR cu wildcards

    Aveți nevoie să identificați celule care conțin una dintre șirurile de text wildcard? În acest caz, puteți combina instrucțiunea clasică IF OR cu formula COUNTIF sau ISNUMBER SEARCH discutată mai sus.

    De exemplu, pentru a căuta "aa" SAU "bb" în A2, ignorând majusculele literelor și pentru a returna "Da" dacă se găsește oricare dintre ele, utilizați una dintre aceste formule:

    =IF(OR(ISNUMBER(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2))), "Yes", "")

    sau

    =IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Da", "")

    Adăugarea a două funcții COUNTIF va funcționa și ea. În acest caz, semnul plus funcționează ca operatorul OR:

    =IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Da", "")

    În loc să introduceți șiruri de caractere wildcard în formulă, le puteți introduce în celule separate, de exemplu D2 și F2, așa cum se arată în captura de ecran de mai jos. Observați că aceste referințe de celule sunt blocate cu semnul $, astfel încât formula să fie copiată corect în celulele de mai jos:

    =IF(OR(COUNTIF(A2, "*"&$D$2& "*"), COUNTIF(A2, "*"&$F$2& "*")), "Yes", "")

    Formulele de mai sus funcționează bine pentru 2 potriviri parțiale, dar dacă căutați 3 sau mai multe, acestea ar deveni prea lungi. În acest caz, este logic să abordați sarcina în mod diferit:

    Furnizați mai multe subșiruri funcției SEARCH într-o matrice constantă, numărați numerele returnate și verificați dacă rezultatul este mai mare decât zero (ceea ce ar însemna că cel puțin unul dintre subșiruri a fost găsit):

    =IF(COUNT(SEARCH({"aa", "bb"}, A2))>0, "Yes", "")

    În acest fel, veți obține exact același rezultat cu o formulă mai compactă:

    Formula Excel IF ȘI cu wildcards

    Atunci când doriți să verificați dacă o celulă conține două sau mai multe subșiruri diferite, cel mai simplu este să folosiți funcția COUNTIFS cu wildcards pentru testul logic.

    Să presupunem că doriți să localizați celulele din coloana A care conțin atât "b", cât și "2". Pentru a face acest lucru, utilizați "*b*" și "*2*" pentru criteriile COUNTIFS și A2 pentru intervalul de criterii:

    =IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Yes", "")

    O altă modalitate este de a utiliza formula IF AND împreună cu ISNUMBER SEARCH:

    =IF(AND(ISNUMBER(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2))), "Yes", "")

    Deși nu includem niciun caracter wildcard în această formulă, aceasta funcționează ca și cum ar căuta două șiruri de caractere wildcard ("*b*" și "*2*") în aceeași celulă.

    Bineînțeles, nimic nu vă împiedică să introduceți valorile de căutare în celule predefinite, D2 și F2 în cazul nostru, și să furnizați referințele celulelor în formulă:

    =IF(AND(ISNUMBER(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2))), "Yes", "")

    Dacă preferați să folosiți formule mai compacte ori de câte ori este posibil, atunci s-ar putea să vă placă mai mult abordarea constantă de matrice. Formula IF COUNT SEARCH este foarte asemănătoare cu cea din exemplul anterior, dar pentru că de data aceasta ambele subșiruri trebuie să apară în A2, verificăm dacă numărul este egal cu 2:

    =IF(COUNT(SEARCH({"b", "2"}, A2))=2, "Da", "")

    Acestea sunt principalele metode de utilizare a caracterelor wildcard în declarația IF în Excel. Dacă cunoașteți și alte soluții, alți utilizatori vor aprecia cu siguranță dacă vă împărtășiți experiența în comentarii. Vă mulțumesc pentru lectură și sper să ne revedem pe blog săptămâna viitoare!

    Caietul de practică pentru descărcare

    Exemple de exemple de formule wildcard IF în Excel (fișier .xlsx)

    Michael Brown este un pasionat de tehnologie dedicat, cu o pasiune pentru simplificarea proceselor complexe folosind instrumente software. Cu mai mult de un deceniu de experiență în industria tehnologiei, el și-a perfecționat abilitățile în Microsoft Excel și Outlook, precum și în Google Sheets și Docs. Blogul lui Michael este dedicat împărtășirii cunoștințelor și experienței sale cu alții, oferind sfaturi și tutoriale ușor de urmat pentru îmbunătățirea productivității și eficienței. Indiferent dacă sunteți un profesionist experimentat sau un începător, blogul lui Michael oferă informații valoroase și sfaturi practice pentru a profita la maximum de aceste instrumente software esențiale.