Innehållsförteckning
I handledningen finns ett antal exempel på formler med Excel if contains som visar hur man returnerar något i en annan kolumn om en målcell innehåller ett önskat värde, hur man söker med partiell matchning och testar flera kriterier med OR- och AND-logik.
En av de vanligaste uppgifterna i Excel är att kontrollera om en cell innehåller ett värde av intresse. Vad kan det vara för värde? Vilken text eller vilket tal som helst, specifik text eller vilket värde som helst (inte tom cell).
Det finns flera varianter av formeln "Om cellen innehåller" i Excel, beroende på exakt vilka värden du vill hitta. I allmänhet använder du IF-funktionen för att göra ett logiskt test och returnera ett värde när villkoret uppfylls (cellen innehåller) och/eller ett annat värde när villkoret inte uppfylls (cellen innehåller inte). Nedanstående exempel täcker de vanligaste scenarierna.
Om cellen innehåller något värde, då
Till att börja med ska vi se hur vi kan hitta celler som innehåller vad som helst: text, siffror eller datum. För detta använder vi en enkel IF-formel som kontrollerar om det finns celler som inte är tomma.
IF( cell "", value_to_return (värde_till_återlämnande) , "")Om du till exempel vill få tillbaka "Not blank" i kolumn B om kolumn A:s cell i samma rad innehåller något värde, anger du följande formel i B2 och dubbelklickar sedan på den lilla gröna kvadraten i det nedre högra hörnet för att kopiera formeln ner i kolumnen:
=IF(A2""", "Inte tomt", "")
Resultatet kommer att se ut ungefär så här:
Om cellen innehåller text, ska
Om du bara vill hitta celler med textvärden som ignorerar siffror och datum använder du IF i kombination med ISTEXT-funktionen. Här är den generiska formeln för att returnera ett värde i en annan cell om en målcell innehåller vilken text som helst :
IF(ISTEXT( cell ), value_to_return (värde_till_återlämnande) , "")Anta att du vill infoga ordet "ja" i kolumn B om en cell i kolumn A innehåller text. För att få det gjort, sätt in följande formel i B2:
=IF(ISTEXT(A2), "Ja", "")
Om cellen innehåller ett nummer
På samma sätt kan du identifiera celler med numeriska värden (siffror och datum) genom att använda IF-funktionen tillsammans med ISNUMBER:
IF(ISNUMBER( cell ), value_to_return (värde_till_återlämnande) , "")Följande formel returnerar "ja" i kolumn B om en motsvarande cell i kolumn A innehåller något nummer:
=IF(ISNUMBER(A2), "Ja", "")
Om cellen innehåller specifik text
Det är enkelt att hitta celler som innehåller viss text (eller siffror eller datum). Du skriver en vanlig IF-formel som kontrollerar om en målcell innehåller den önskade texten och skriver texten som ska returneras i fältet value_if_true argument.
IF( cell =" text ", value_to_return (värde_till_återlämnande) , "")Om du till exempel vill ta reda på om cell A2 innehåller "äpplen" använder du den här formeln:
=IF(A2="äpplen", "Ja", "")
Om cellen inte innehåller någon specifik text
Om du vill ha det motsatta resultatet, dvs. returnera ett värde till en annan kolumn om målcellen inte innehåller den angivna texten ("äpplen"), gör du något av följande.
Ange en tom sträng ("") i fältet value_if_true argumentet, och den text som ska returneras i value_if_false argument:
=IF(A2="äpplen", "", "Inte äpplen")
Eller så kan du sätta in operatören "inte lika med" i logisk_test och text som ska återges i value_if_true:
=IF(A2 "äpplen", "Inte äpplen", "")
I vilket fall som helst ger formeln detta resultat:
Om cellen innehåller text: formel som tar hänsyn till stor- och små bokstäver
Om du vill tvinga formeln att skilja mellan stora och små bokstäver använder du funktionen EXACT som kontrollerar om två textsträngar är exakt lika, inklusive bokstavsbokstäverna:
=IF(EXACT(A2, "ÄPPEL"), "Ja", "")
Du kan också ange modellens textsträng i en cell (till exempel i C1), fastställa cellreferensen med $-tecknet ($C$1) och jämföra målcellen med den cellen:
=IF(EXACT(A2,$C$1), "Ja", "")
Om cellen innehåller en specifik textsträng (partiell matchning)
Vi har avslutat triviala uppgifter och går vidare till mer utmanande och intressanta uppgifter :) I det här exemplet krävs det tre olika funktioner för att ta reda på om ett visst tecken eller en delsträng ingår i cellinnehållet:
IF(ISNUMBER(SEARCH(" text" , cell )), value_to_return (värde_till_återlämnande) ,"")Här är vad formeln gör när du arbetar inifrån och ut:
- SEARCH-funktionen söker efter en textsträng, och om strängen hittas returnerar den positionen för det första tecknet, och i annat fall #VALUE!
- Funktionen ISNUMBER kontrollerar om SEARCH har lyckats eller misslyckats. Om SEARCH har gett ett nummer återger ISNUMBER TRUE. Om SEARCH resulterar i ett fel återger ISNUMBER FALSE.
- Slutligen returnerar IF-funktionen det angivna värdet för celler som har TRUE i det logiska testet, annars en tom sträng ("").
Nu ska vi se hur den här generiska formeln fungerar i verkliga arbetsblad.
Om en cell innehåller en viss text, sätt ett värde i en annan cell
Anta att du har en lista med order i kolumn A och att du vill hitta order med en specifik identifierare, till exempel "A-". Uppgiften kan utföras med den här formeln:
=IF(ISNUMBER(SEARCH("A-",A2)), "Valid","")
I stället för att hårdkoda strängen i formeln kan du ange den i en separat cell (E1) och referera till den cellen i formeln:
=IF(ISNUMBER(SEARCH($E$1,A2)), "Valid","")
För att formeln ska fungera korrekt måste du se till att du låser adressen till cellen som innehåller strängen med $-tecknet (absolut cellreferens).
Om cellen innehåller specifik text, kopiera den till en annan kolumn
Om du vill kopiera innehållet i de giltiga cellerna någon annanstans, anger du bara adressen till den utvärderade cellen (A2) i value_if_true argument:
=IF(ISNUMBER(SEARCH($E$1,A2)),A2,"")
Skärmbilden nedan visar resultatet:
Om cellen innehåller specifik text: formel som tar hänsyn till stor- och små bokstäver
I båda exemplen ovan är formlerna okänsliga för stora och små bokstäver. Om du arbetar med data som är känsliga för stora och små bokstäver använder du funktionen FIND i stället för SEARCH för att skilja på teckenbokstäverna.
Följande formel identifierar till exempel endast beställningar med stor bokstav "A-" som ignorerar små bokstäver "a-".
=IF(ISNUMBER(FIND("A-",A2)), "Valid","")
Om cellen innehåller en av flera textsträngar (OR-logik)
Om du vill identifiera celler som innehåller minst en av de många saker du söker efter använder du en av följande formler.
Formeln IF OR ISNUMBER SEARCH
Den mest uppenbara metoden skulle vara att kontrollera varje delsträng individuellt och låta OR-funktionen återge TRUE i det logiska testet i IF-formeln om minst en delsträng hittas:
IF(OR(ISNUMBER(SEARCH(" sträng1 ", cell ))), ISNUMBER(SEARCH(" sträng2 ", cell ))), value_to_return (värde_till_återlämnande) , "")Om du har en lista med SKU:er i kolumn A och du vill hitta de som innehåller antingen "klänning" eller "kjol" kan du göra det med hjälp av följande formel:
=IF(OR(ISNUMBER(SEARCH("klänning",A2)),ISNUMBER(SEARCH("kjol",A2))), "Valid ","")
Formeln fungerar ganska bra för ett par objekt, men det är definitivt inte rätt väg att gå om du vill kontrollera många saker. I det här fallet är det bättre att använda funktionen SUMPRODUCT som visas i nästa exempel.
SUMPRODUCT ISNUMBER SEARCH-formel
Om du har att göra med flera textsträngar skulle sökningen av varje sträng för sig göra formeln för lång och svårläst. En elegantare lösning är att bädda in kombinationen ISNUMBER SEARCH i SUMPRODUCT-funktionen och se om resultatet är större än noll:
SUMPRODUCT(--ISNUMBER(SEARCH( strängar , cell )))>0Om du till exempel vill ta reda på om A2 innehåller något av orden i cellerna D2:D4 använder du den här formeln:
=SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0
Alternativt kan du skapa ett namngivet intervall som innehåller de strängar du vill söka efter eller ange orden direkt i formeln:
=SUMPRODUCT(--ISNUMMER(SEARCH({"klänning", "kjol", "jeans"},A2)))>0
Resultatet blir i alla fall ungefär så här:
För att göra resultatet mer användarvänligt kan du bädda in ovanstående formel i IF-funktionen och returnera din egen text i stället för TRUE/FALSE-värdena:
=IF(SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0, "Valid", "")
Hur denna formel fungerar
I grund och botten använder du ISNUMBER tillsammans med SEARCH som förklaras i föregående exempel. I det här fallet representeras sökresultaten i form av en matris som {TRUE;FALSE;FALSE}. Om en cell innehåller minst en av de angivna delsträngarna kommer det att finnas TRUE i matrisen. Den dubbla unära operatorn (--) tvingar värdena TRUE / FALSE till 1 respektive 0 och ger en matris som{1;0;0;0}. Slutligen adderar funktionen SUMPRODUCT siffrorna och vi väljer ut de celler där resultatet är större än noll.
Om cellen innehåller flera strängar (AND-logik)
När du vill hitta celler som innehåller alla de angivna textsträngarna kan du använda den redan välkända kombinationen ISNUMBER SEARCH tillsammans med IF AND:
IF(AND(ISNUMBER(SEARCH(" sträng1 ", cell ))), ISNUMBER(SEARCH(" sträng2 ", cell ))), value_to_return (värde_till_återlämnande) ,"")Med den här formeln kan du till exempel hitta SKU:er som innehåller både "klänning" och "blå":
=IF(AND(ISNUMBER(SEARCH("dress",A2)),ISNUMBER(SEARCH("blue",A2))), "Valid ","")
Du kan också skriva strängarna i separata celler och hänvisa till dessa celler i formeln:
=IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2))), "Valid ","")
Som en alternativ lösning kan du räkna förekomsterna av varje sträng och kontrollera om varje antal är större än noll:
=IF(AND(COUNTIF(A2, "*klänning*")>0,COUNTIF(A2, "*blå*")>0), "Valid","")
Resultatet kommer att se ut precis som i skärmbilden ovan.
Hur du returnerar olika resultat baserat på cellvärdet
Om du vill jämföra varje cell i målkolumnen med en annan lista med objekt och returnera ett annat värde för varje matchning kan du använda något av följande tillvägagångssätt.
Inbäddade IF:er
Logiken i den inbäddade IF-formeln är så här enkel: du använder en separat IF-funktion för att testa varje villkor och återger olika värden beroende på resultaten av dessa tester.
IF( cell =" lookup_text1 ", " Återge . _ text1 ", IF( cell =" lookup_text2 ", " Återge . _ text2 ", IF( cell =" lookup_text3 ", " Återge . _ text3 ", "")))Anta att du har en lista med artiklar i kolumn A och att du vill ha deras förkortningar i kolumn B. Använd följande formel för att göra det:
=IF(A2="äpple", "Ap", IF(A2="avocado", "Av", IF(A2="banan", "B", IF(A2="citron", "L", ""))))
För fullständig information om syntaxen och logiken i nested IF, se Excel nested IF - flera villkor i en enda formel.
Uppslagsformel
Om du vill ha en mer kompakt och lättförståelig formel kan du använda LOOKUP-funktionen med uppslags- och returvärdena som vertikala konstanter i en matris:
LOOKUP( cell , {" lookup_text1 ";" lookup_text2 ";" lookup_text3 ";...}, {" Återge . _ text1 ";" Återge . _ text2 ";" Återge . _ text3 ";...})För att få korrekta resultat ska du se till att lista uppslagsvärdena i alfabetisk ordning , från A till Z.
=LOOKUP(A2,{"apple";"avocado";"banana";"lemon"},{"Ap";"Av";"B";"L"})
Jämfört med inbäddade IF:er har Lookup-formeln ytterligare en fördel - den förstår jokertecken och kan därför identifiera partiella matchningar.
Om kolumn A till exempel innehåller några sorters bananer kan du söka på "*banana*" och få samma förkortning ("B") för alla sådana celler:
=LOOKUP(A2,{"apple";"avocado";"*banana*";"lemon"},{"Ap";"Av";"B";"L"})
Mer information finns i Uppslagsformel som ett alternativ till inbäddade IF:er.
Vlookup-formel
När du arbetar med en variabel datamängd kan det vara bekvämare att ange en lista med matchningar i separata celler och hämta dem med hjälp av en Vlookup-formel, t.ex:
=VLOOKUP(A2, $D$2:$E$5, 2,FALSE )
Mer information finns i Excel VLOOKUP-handledning för nybörjare.
Det är så här du kontrollerar om en cell innehåller något värde eller specifik text i Excel. Nästa vecka fortsätter vi att titta på formlerna Om cellen innehåller i Excel och lär oss hur man räknar eller summerar relevanta celler, kopierar eller tar bort hela rader som innehåller dessa celler och mycket mer.
Arbetsbok för övning
Excel Om cellen innehåller - exempel på formler (.xlsx-fil)