INHOUDSOPGAWE
Probeer jy om 'n IF-stelling met jokertekenteks te bou, maar dit misluk elke keer? Die probleem is nie in jou formule nie, maar in die funksie self - Excel IF ondersteun nie jokertekens nie. Daar is egter 'n manier om dit te laat werk vir gedeeltelike tekspassing, en hierdie tutoriaal sal jou leer hoe.
Wanneer jy gedeeltelike of vaag passing in Excel wil uitvoer, is die mees voor die hand liggende oplossing om jokertekens te gebruik. Maar wat as 'n spesifieke funksie wat jy moet gebruik nie jokertekens-karakters ondersteun nie? Ongelukkig is Excel IF een van sulke funksies. Dit is veral teleurstellend as in ag geneem word dat ander "voorwaardelike" funksies soos COUNTIF, SUMIF en AVERAGEIFS uitstekend met jokertekens werk.
Gelukkig is dit nie die struikelblok wat 'n kreatiewe Excel-gebruiker kan stuit nie :) Deur IF te kombineer met ander funksies, kan jy dit dwing om 'n gedeeltelike passing te evalueer en 'n goeie alternatief vir 'n Excel IF wildcard formule kry.
Hoekom Excel IF funksie met wildcard nie werk nie
In die voorbeeldtabel hieronder, veronderstel jy wil kyk of die ID's in die eerste kolom die letter "A" bevat. Indien gevind - vertoon "Ja" in kolom B, indien nie - vertoon "Nee".
Dit lyk of dit 'n maklike oplossing sal wees om jokertekenteks in die logiese toets in te sluit:
=IF(A2="*a*","Yes", "No")
Maar dit werk ongelukkig nie. Die formule gee "Nee" vir al die selle, selfs dié wat "A" bevat:
Hoekom doen'n jokerteken IF-stelling misluk? Uit alle voorkoms herken Excel nie jokertekens wat met 'n gelykheidsteken of ander logiese operateurs gebruik word nie. As u die lys funksies wat jokertekens ondersteun, van nader bekyk, sal jy sien dat hul sintaksis aanvaar dat 'n jokertekenteks direk in 'n argument soos hierdie verskyn:
=COUNTIF(A2:A10, "*a*")
Excel IF bevat gedeeltelike teks
Nou dat jy weet wat die rede is waarom 'n jokerteken-IF-formule misluk, kom ons probeer uitvind hoe om dit te laat werk. Hiervoor sal ons eenvoudig 'n funksie insluit wat jokertekens in die logiese toets van IF aanvaar, naamlik die COUNTIF-funksie:
IF(COUNTIF( sel, "* teks* "), value_if_true, value_if_false)Met hierdie benadering het IF geen probleem om jokertekens te verstaan nie en identifiseer foutloos die selle wat óf "A" óf "a" bevat (aangesien COUNTIF nie hooflettersensitief is nie):
=IF(COUNTIF(A2, "*a*"),"Yes", "No")
Hierdie formule gaan na B2, of enige ander sel in ry 2, en dan kan jy dit afsleep na soveel selle as wat nodig is:
Hierdie oplossing kan ook gebruik word om stringe van 'n spesifieke patroon op te spoor. Gestel net die ID's wat bestaan uit 2 groepe van 2 karakters wat met 'n koppelteken geskei is, is geldig, kan jy die "??-??" jokertekenstring om hulle te identifiseer:
=IF(COUNTIF(A2, "??-??"), "Valid", "")
Hoe hierdie formule werk:
Vir die logiese toets van IF, ons gebruik die COUNTIF-funksie wat die aantal selle tel wat ooreenstem met die gespesifiseerde jokertekenstring. Aangesien die kriteriareeks 'n enkele sel (A2) is, is die resultaat altyd 1 (passing word gevind) of 0 (passing word nie gevind nie). Gegee dat 1 gelyk is aan WAAR en 0 aan ONWAAR, gee die formule "Geldig" (waarde_as_waar) terug wanneer die telling 1 is en 'n leë string (waarde_as_onwaar) wanneer die telling 0 is.
IF IS GETAL SOEK formule vir gedeeltelike passings
'n Ander manier om Excel IF te dwing om vir gedeeltelike tekspassing te werk, is om óf die FIND- óf SOEK-funksie in die logiese toets in te sluit. Die verskil is dat FIND hooflettergevoelig is terwyl SEARCH nie is nie.
Dus, afhangend van of jy kleinletters en hoofletters as dieselfde of verskillende karakters wil behandel, sal een van hierdie formules 'n lekkerny wees:
Hoofletter-onsensitiewe formule vir gedeeltelike passing:
IF(ISNUMBER(SOEK(" teks", sel)), waarde_as_waar, waarde_as_onwaar )Kas-sensitiewe formule vir gedeeltelike passing:
IF(ISNUMBER(FIND(" teks", sel)), waarde_as_waar, waarde_as_onwaar )Aangesien beide funksies ontwerp is om 'n "sel bevat" tipe passing uit te voer, is wildcards nie regtig nodig in hierdie geval nie.
Byvoorbeeld, om ID's op te spoor wat "A" of "a" bevat , die formule is:
=IF(ISNUMBER(SEARCH("A", A2)), "Yes", "No")
Om slegs vir 'n hoofletter "A" te soek en "a" te ignoreer, is die formule:
=IF(ISNUMBER(FIND("A", A2)), "Yes", "No")
In B6 in die skermkiekie hieronder, kan jy die verskil in die resultaat waarneem:
Hoe hierdie formule werk:
By die hart vandie formule, daar is 'n kombinasie van ISNUMBER en SOEK (of VIND):
ISNUMBER(SEARCH("A", A2))
Die SOEK-funksie soek die gespesifiseerde teks ("A" in hierdie voorbeeld) en gee sy posisie binne 'n string in A2. As die teks nie gevind word nie, word 'n #VALUE-fout teruggestuur. Aangesien beide SEARCH en FIND ontwerp is om 'n "sel bevat" tipe passing uit te voer, is jokertekens nie regtig nodig in hierdie geval nie.
Die ISNUMBER-funksie skakel 'n getal om na WAAR en enige ander waarde insluitend fout na ONWAAR . Die logiese waarde gaan direk na die logiese toets van IF. In ons geval bevat A2 "A", dus ISNUMBER gee TRUE:
IF(TRUE, "Yes", "No")
As gevolg hiervan gee IF die waarde wat vir die waarde_as_waar -argument is, terug, wat is "Ja".
Excel IF OF-stelling met jokertekens
Moet jy selle identifiseer wat een van jokertekenteksstringe bevat? In hierdie geval kan jy die klassieke IF OF-stelling kombineer met die COUNTIF- of ISNUMBER SOEK-formule wat hierbo bespreek is.
Om byvoorbeeld vir "aa" OF "bb" in A2 te soek, ignoreer die letterhoofletters en gee " Ja" as een van hulle gevind word, gebruik een van hierdie formules:
=IF(OR(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2))), "Yes", "")
of
=IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Yes", "")
Om twee COUNTIF-funksies op te tel, sal ook werk. In hierdie geval werk die plusteken soos die OF-operateur:
=IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Yes", "")
In plaas daarvan om jokertekenstringe in die formule te hardkodeer, kan jy dit in aparte selle invoer, sê D2 en F2, soos aangedui in die skermkiekie hieronder. Let asseblief daarop dat hierdieselverwysings word met die $-teken gesluit sodat die formule korrek na die onderstaande selle kopieer:
=IF(OR(COUNTIF(A2, "*"&$D$2&"*"), COUNTIF(A2, "*"&$F$2&"*")), "Yes", "")
Bogenoemde formules werk goed vir 2 gedeeltelike passings , maar as jy na 3 of meer soek, sal hulle te lank word. In hierdie geval is dit logies om die taak anders te benader:
Verskaf veelvuldige substringe aan die SEARCH-funksie in 'n skikkingkonstante, tel die teruggekeerde getalle en kyk of die resultaat groter as nul is (wat sou beteken dat ten minste een van die substringe gevind word):
=IF(COUNT(SEARCH({"aa","bb"}, A2))>0, "Yes", "")
Op hierdie manier sal jy presies dieselfde resultaat kry met 'n meer kompakte formule:
Excel IF EN formule met jokertekens
Wanneer jy wil kyk of 'n sel twee of meer verskillende substringe bevat, is die maklikste manier om die COUNTIFS-funksie met jokertekens vir die logiese toets te gebruik.
Gestel jy wil selle in kolom A opspoor wat beide "b" EN "2" bevat. Om dit te laat doen, gebruik "*b*" en "*2*" vir COUNTIFS se kriteria en A2 vir die kriteriareeks:
=IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Yes", "")
'n Ander manier is om die IF EN formule saam te gebruik met ISNUMBER SOEK:
=IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2))), "Yes", "")
Alhoewel ons geen jokertekenkarakters by hierdie formule insluit nie, werk dit soos om vir twee jokertekenstringe te soek ("*b*" en "*2*" ) in dieselfde sel.
Natuurlik verhinder niks jou om die soekwaardes in voorafbepaalde selle, D2 en F2 in ons geval, in te voer en te verskafdie selverwysings na die formule:
=IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2))), "Yes", "")
As jy verkies om meer kompakte formules te gebruik waar moontlik, sal jy dalk beter hou van die skikking konstante benadering. Die IF COUNT SEARCH formule is baie soos in die vorige voorbeeld, maar omdat beide substringe hierdie keer in A2 moet verskyn, kyk ons of die telling gelyk is aan 2:
=IF(COUNT(SEARCH({"b","2"}, A2))=2, "Yes", "")
Hierdie is die hoofmetodes om jokertekens in IF-stelling in Excel te gebruik. As jy enige ander oplossings ken, sal ander gebruikers dit beslis waardeer as jy jou ervaring in kommentaar deel. Ek bedank jou vir die lees en hoop om jou volgende week op ons blog te sien!
Oefen werkboek vir aflaai
Excel IF wildcard formule voorbeelde (.xlsx lêer)