Innehållsförteckning
Försöker du bygga en IF-angivelse med wildcard-text, men misslyckas varje gång? Problemet ligger inte i formeln utan i själva funktionen - Excel IF stöder inte wildcard-tecken. Det finns dock ett sätt att få den att fungera för partiell textmatchning, och den här handledningen kommer att lära dig hur.
När du vill utföra partiell eller oklar matchning i Excel är den mest uppenbara lösningen att använda jokertecken. Men vad händer om en specifik funktion som du behöver använda inte har stöd för jokertecken? Tyvärr är Excel IF en sådan funktion. Detta är särskilt tråkigt med tanke på att andra "villkorliga" funktioner som COUNTIF, SUMIF och AVERAGEIFS fungerar utmärkt med jokertecken.
Lyckligtvis är det inte det hinder som kan stoppa en kreativ Excel-användare :) Genom att kombinera IF med andra funktioner kan du tvinga den att utvärdera en partiell matchning och få ett trevligt alternativ till en Excel-formel med jokertecknet IF.
Varför Excel IF-funktionen med jokertecken inte fungerar
I exempeltabellen nedan antar vi att du vill kontrollera om ID-koderna i den första kolumnen innehåller bokstaven "A". Om de hittas visas "Ja" i kolumn B, om de inte hittas visas "Nej".
Det verkar som om det skulle vara en enkel lösning att inkludera jokertexter i det logiska testet:
=IF(A2="*a*", "Ja", "Nej")
Men tyvärr fungerar det inte, utan formeln returnerar "Nej" för alla celler, även de som innehåller "A":
Varför misslyckas en IF-angivelse med jokertecken? Det verkar som om Excel inte känner igen jokertecken som används tillsammans med ett likhetstecken eller andra logiska operatörer. Om du tittar närmare på listan över funktioner som stöder jokertecken kommer du att märka att syntaxen förutsätter att texten med jokertecken visas direkt i ett argument, till exempel så här:
=COUNTIF(A2:A10, "*a*")
Excel IF innehåller en del av texten
Nu när du vet varför en IF-formel med jokertecken inte fungerar, ska vi försöka lista ut hur vi ska få den att fungera. För detta ska vi helt enkelt bädda in en funktion som accepterar jokertecken i det logiska testet av IF, nämligen COUNTIF-funktionen:
IF(COUNTIF( cell , "* text *"), value_if_true, value_if_false)Med detta tillvägagångssätt har IF inga problem med att förstå jokertecken och identifierar utan problem de celler som innehåller antingen "A" eller "a" (eftersom COUNTIF inte är skiftlägeskänslig):
=IF(COUNTIF(A2, "*a*"), "Ja", "Nej")
Formeln placeras i B2, eller i vilken annan cell som helst i rad 2, och du kan sedan dra den nedåt till så många celler som du behöver:
Denna lösning kan också användas för att lokalisera strängar med ett visst mönster Om du antar att endast ID:n som består av två grupper av två tecken separerade med ett bindestreck är giltiga kan du använda jokertecknet "??-???" för att identifiera dem:
=IF(COUNTIF(A2, "??-???"), "Valid", "")
Hur denna formel fungerar:
För det logiska testet av IF använder vi funktionen COUNTIF som räknar antalet celler som matchar den angivna jokersträngen. Eftersom kriterieområdet är en enda cell (A2) är resultatet alltid 1 (matchning har hittats) eller 0 (matchning har inte hittats). Med tanke på att 1 är lika med TRUE (sant) och 0 med FALSE (falskt), returnerar formeln "Valid" (value_if_true) när antalet är 1 och en tom sträng (value_if_false) när antalet är 1.är 0.
IF ISNUMBER SÖKNINGsformel för partiella träffar
Ett annat sätt att tvinga Excel IF att fungera för partiell textmatchning är att inkludera antingen funktionen FIND eller SEARCH i det logiska testet. Skillnaden är att FIND är skiftlägeskänslig medan SEARCH inte är det.
Beroende på om du vill behandla små och stora bokstäver som samma eller olika tecken kan en av dessa formler fungera utmärkt:
Skiftlägen är okänsliga formel för partiell matchning:
IF(ISNUMBER(SEARCH(" text ", cell ))), value_if_true, value_if_false)Skiftlägeskänslig formel för partiell matchning:
IF(ISNUMBER(FIND(" text ", cell ))), value_if_true, value_if_false)Eftersom båda funktionerna är utformade för att utföra en matchning av typen "cell contains" behövs egentligen inga jokertecken i det här fallet.
För att upptäcka ID som innehåller "A" eller "a" är formeln till exempel:
=IF(ISNUMBER(SEARCH("A", A2)), "Ja", "Nej")
Om du bara vill söka efter ett stort "A" och ignorera "a" är formeln följande:
=IF(ISNUMBER(FIND("A", A2)), "Ja", "Nej")
I B6 i skärmbilden nedan kan du se skillnaden i resultatet:
Hur denna formel fungerar:
I formelns kärna finns en kombination av ISNUMBER och SEARCH (eller FIND):
ISNUMBER(SEARCH("A", A2))
Funktionen SEARCH letar efter den angivna texten ("A" i det här exemplet) och returnerar dess position i en sträng i A2. Om texten inte hittas returneras ett #VALUE-fel. Eftersom både SEARCH och FIND är utformade för att utföra en matchning av typen "cell contains" behövs egentligen inga jokertecken i det här fallet.
Funktionen ISNUMBER omvandlar ett tal till TRUE och alla andra värden, inklusive fel, till FALSE. Det logiska värdet går direkt till det logiska testet i IF. I vårt fall innehåller A2 "A", så ISNUMBER returnerar TRUE:
IF(TRUE, "Ja", "Nej")
Resultatet är att IF returnerar det värde som fastställts för value_if_true argumentet, som är "Ja".
Excel IF OR-angivelse med jokertecken
Behöver du identifiera celler som innehåller en av de jokerteckensträngar som du har diskuterat ovan kan du kombinera det klassiska IF OR-kommandot med formeln COUNTIF eller ISNUMBER SEARCH.
Om du till exempel vill söka efter "aa" ELLER "bb" i A2 och ignorera bokstavsbokstäverna och returnera "Ja" om någon av dem hittas, använder du en av dessa formler:
=IF(OR(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2))), "Yes", "")
eller .
=IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Ja", "")
Det fungerar också att addera två COUNTIF-funktioner. I det här fallet fungerar plustecknet som OR-operatorn:
=IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Ja", "")
I stället för att hårdkoda jokersträngar i formeln kan du ange dem i separata celler, till exempel D2 och F2, som visas i skärmdumpen nedan. Observera att dessa cellreferenser är låsta med $-tecknet så att formeln kopieras korrekt till cellerna nedan:
=IF(OR(COUNTIF(A2, "*"&$D$2& "*"), COUNTIF(A2, "*"&$F$2& "*")), "Ja", "")
Formlerna ovan fungerar bra för två partiella matchningar, men om du söker efter tre eller fler matchningar blir de för långa. I så fall är det rimligt att ta itu med uppgiften på ett annat sätt:
Ge flera delsträngar till SEARCH-funktionen i en arraykonstant, räkna de returnerade talen och kontrollera om resultatet är större än noll (vilket skulle betyda att minst en av delsträngarna hittats):
=IF(COUNT(SEARCH({"aa", "bb"}, A2))>0, "Ja", "")
På så sätt får du exakt samma resultat med en mer kompakt formel:
Excel IF AND-formel med jokertecken
När du vill kontrollera om en cell innehåller två eller flera olika delsträngar är det enklaste sättet att använda funktionen COUNTIFS med jokertecken för det logiska testet.
Anta att du vill hitta celler i kolumn A som innehåller både "b" OCH "2". Använd "*b*" och "*2*" som kriterier för COUNTIFS och A2 som intervall för kriterierna:
=IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Ja", "")
Ett annat sätt är att använda formeln IF AND tillsammans med ISNUMBER SEARCH:
=IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2))), "Yes", "")
Även om vi inte inkluderar några jokertecken i den här formeln fungerar det som att söka efter två jokerteckensträngar ("*b*" och "*2*") i samma cell.
Naturligtvis finns det inget som hindrar dig från att skriva in sökvärdena i fördefinierade celler, D2 och F2 i vårt fall, och ange cellreferenserna i formeln:
=IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2))), "Yes", "")
Om du föredrar att använda mer kompakta formler när det är möjligt, kanske du föredrar att använda arraykonstantmetoden. Formeln IF COUNT SEARCH är ungefär som i det föregående exemplet, men eftersom båda delsträngarna måste förekomma i A2 den här gången, kontrollerar vi om antalet är lika med 2:
=IF(COUNT(SEARCH({"b", "2"}, A2))=2, "Ja", "")
Detta är de viktigaste metoderna för att använda jokertecken i IF-statement i Excel. Om du känner till andra lösningar, kommer andra användare säkert att uppskatta om du delar din erfarenhet i kommentarer. Jag tackar dig för att du läste och hoppas att vi ses på vår blogg nästa vecka!
Arbetsbok för övning för nedladdning
Exempel på Excel-formler för IF jokertecken (.xlsx-fil)