Innehållsförteckning
Om du har en lista med text och vill söka i celler och returnera värden baserat på listan måste du skapa en formel eftersom Excel inte tillhandahåller ett enkelt sätt att göra detta. I den här artikeln har jag tagit upp detta problem och tillhandahållit fem olika formler för att utföra denna operation så att du kan välja den perfekta för din situation och returnera värdet om cellen innehåller viss text.från en lista.
Ladda ner övningsboken
Du kan ladda ner arbetsboken som jag använde i den här artikeln från följande knapp och öva med den själv.
Om cell innehåller text från lista.xlsx
Introduktion till de funktioner som används i den här artikeln
De formler som jag använt här använder följande funktioner:
- Funktionen COUNTIFS:
Den här funktionen räknar celler som uppfyller flera kriterier. Syntaxen för COUNTIFS-funktion är följande.
=COUNTIFS (område1, kriterier1, [område2], [kriterier2], ...)
- intervall1 - Det första intervallet att utvärdera.
- kriterier1 - Det kriterium som ska användas för det första intervallet.
- range2 [valfritt]: Det andra intervallet fungerar precis som intervall 1.
- kriterier2 [valfritt]: Det kriterium som ska användas för det andra intervallet. Denna funktion tillåter högst 127 Intervall och kriteriepar. .
- Funktionen TEXTJOIN:
Den här funktionen förenar textvärden med en avgränsare. Syntaxen för TEXTJOIN-funktionen är följande.
=TEXTJOIN (avgränsare, ignore_empty, text1, [text2], ...)
- avgränsare: Separatorn mellan de texter som funktionen ska kombinera.
- ignore_empty: Detta argument anger om funktionen ska ignorera de tomma cellerna eller inte.
- text1: Första textvärdet (eller intervallet).
- text2 [valfritt]: Andra textvärdet (eller intervallet).
- MATCH-funktionen:
Den här funktionen hämtar positionen för en post i en matris. Syntaxen för funktionen MATCH-funktionen är följande.
=MATCH (lookup_value, lookup_array, [match_type])
- lookup_value: Det värde som ska matchas i Lookup_array .
- lookup_array: Ett intervall av celler eller en referens till en matris.
- match_type [valfritt]: 1 = exakt eller näst minsta, 0 = exakt matchning, -1 = exakt eller näst största. Som standard är match_type=1.
- INDEX-funktionen:
Den här funktionen hämtar värden i en lista eller tabell baserat på plats. Syntaxen för INDEX-funktion är följande.
=INDEX (array, row_num, [col_num], [area_num])
- matris: Ett intervall av celler eller en konstant i en matris.
- row_num: Radpositionen i referensen.
- col_num [valfritt] : Kolonnens position i referensen.
- area_num [valfritt]: Det referensintervall som ska användas.
- Funktionen IFERROR:
Den här funktionen fångar upp och hanterar fel. Syntaxen för IFERROR-funktionen är följande.
=IFERROR (värde, value_if_error)
- värde: Värdet, referensen eller formeln som ska kontrolleras för att hitta ett fel.
- value_if_error: Det värde som ska returneras om ett fel hittas.
- Funktionen SÖKNING:
Den här funktionen hämtar platsen för texten i en sträng. Syntaxen för SÖK-funktionen är följande.
=SEARCH (find_text, within_text, [start_num])
- find_text : Detta argument anger vilken text som ska sökas.
- inom_text: Här anges var texten ska hittas.
- start_nummer [valfritt]: Med detta anger du från vilken position i textsträngen du ska räkna den angivna textens position. Valfritt och standardvärdet är 1 från vänster.
5 formler för att returnera värde i Excel om en cell innehåller viss text från en lista
Jag kommer att försöka presentera ett exempel från verkligheten i detta dataset. Några drycker finns representerade här. Chips , Kalla drycker , och Spannmål är de tre dryckeskategorierna i detta dataset. I en enda kolumn som kallas Alla produkter är dryckernas namn och kategorier kopplade till varandra. Två av dessa kategorier, Chips och Kalla drycker , är också n den Lista kolumn. Baserat på Lista kolumnen visas den önskade produktionen i den andra kolumnen.
1. Kombinera COUNTIF, IF & OR-funktioner för att returnera värdet om en cell innehåller en text från en lista
Detta är den mest användbara formeln om du vill återge värdet för hela cellen efter matchningen.
Här har jag hämtat cellvärdena i Produkter som motsvarade den Lista kolumnkriterier och visade dem för Produkt baserad på denna lista kolumn.
Formeln är följande:
=IF(OR(COUNTIF(B5,"*"&$E$5:$E$6&"*")),B5,"")
Uppdelning av formlerna:
=IF(OR(COUNTIF(B5,"*"&$E$5:$E$6&"*")),B5,"")
Här kan Asterisk-tecken ( * ) är ett jokertecken. Det sökte efter " Chips " och "Kalla drycker" delsträngar inom Cell B5 som är "
Ruffles - Chips
"
sträng.
-
=IF(OR(COUNTIF("Ruffles - Chips",*Chips*, *Kalla drycker*)), B5, "")
COUNTIF funktionen returnerade en för varje delsträng som matchade. "
Chips
"
finns i Cell B5 , återges { 1:0 }.
=IF(OR({1;0}), B5, "")
ELLER funktionen returnerar en TRUE värdet om något av argumenten är TRUE I detta fall är en (1)= TRUE .
=IF(TRUE, "Ruffles - Chips", "")
Eftersom IF funktionens värde är TRUE återges det första argumentet, som är den önskade utgången.
Slutligt Utgång : Ruffles - Chips
Observera:
Här har jag visat cellen som matchade, men du kan visa vilken utdata du vill genom att ändra IF funktioner med den önskade utgången.
=IF(OR(COUNTIF(B5, "*"&$E$5:$E$6& "*")),TRUE,FALSE)
Läs mer: Om cellen innehåller ett ord, tilldela ett värde i Excel (4 formler)
2. Använd IF-OR-kombination med SEARCH-funktionen för att returnera värde med flera villkor.
Här har jag hämtat cellvärdena i Produkter som motsvarade den Lista kolumnkriterier och visade dem för Produkt baserad på denna lista kolumn.
Formeln är följande:
=IF(OR(ISNUMBER(SEARCH($E$5,B5)),ISNUMBER(SEARCH($E$6,B5))),B5,"")
Uppdelning av formel:
=IF(OR(ISNUMBER(SEARCH($E$5,B5)),ISNUMBER(SEARCH($E$6,B5))),B5,"")
SÖKNING funktionen sökte värdena för Lista kolumnen i Cell B5 . För " Chips " den återkom 11 som är delsträngens startposition. För Kalla drycker , det returnerade ett fel.
=IF(OR(ISNUMBER(11),ISNUMBER(SEARCH(#VALUE))),B5,"")
ISNUMMER funktion konverterad 11 till TRUE värdet och felet i FALSK värde.
=IF(OR(TRUE,FALSE)),B5,"")
ELLER funktionen returnerar en TRUE värdet om något av argumenten är TRUE . Eftersom det finns en TRUE argumentet, returnerar den också TRUE värde i det här fallet.
=IF(TRUE, "Ruffles - Chips","")
Eftersom IF funktionens värde är TRUE återges det första argumentet, som är den önskade utgången.
Slutresultat: Ruffles - Chips
Observera:
- Här har jag visat cellen som matchade, men du kan visa vilken utdata du vill genom att ändra IF funktioner med den önskade utgången.
=IF(OR(ISNUMBER(SEARCH($E$5,B5)),ISNUMBER(SEARCH($E$6,B5))),1,0)
- Den största fördelen med den här formeln är att den inte är en arrayformel, men den rekommenderas inte om du har många celler i Lista eftersom du måste ange varje cell i Lista manuellt.
- För situationer där det är känsligt för stora och små bokstäver kan vi använda nedanstående formel som bygger på Sökfunktion i stället för SÖKNING funktion.
=IF(OR(ISNUMBER(FIND($E$5,B5)),ISNUMBER(FIND($E$6,B5))),B5,"")
Läs mer: Excel Om cellen innehåller text returnerar du värdet (8 enkla sätt)
Liknande läsningar:
- Hur man summerar om cellen innehåller specifik text i Excel (6 sätt)
- Använd VLOOKUP om cellen innehåller ett ord i text i Excel
- Hur man hittar text i ett Excel-område & returnera cellreferens (3 sätt)
3. Använd TEXTJOIN-formeln för att returnera värdet i en annan cell om en cell har en text från en lista
Den här formeln är användbar när du vill visa vilken eller vilka strängar från Lista matchade.
Här har jag hämtat cellvärdena från LISTA kolumnen där de matchas med den Produkt och visade dem för det matchade värdet från Lista kolumn.
Formeln är följande:
=TEXTJOIN(", ",TRUE,IF(COUNTIF(B5, "*"&$E$5:$E$6& "*"), $E$5:$E$6,""))
Uppdelning av formel:
=TEXTJOIN(", ",TRUE,IF(COUNTIF(B5, "*"&$E$5:$E$6& "*"),$E$5:$E$6,""))
Här kan Asterisk-tecken ( * ) är ett jokertecken. Det sökte efter " Chips " och "Kalla drycker" delsträngar inom Cell B5 som är " Ruffles - Chips " sträng.
TEXTJOIN(", ", ",TRUE,IF(COUNTIF("Ruffles - Chips",*Chips*, *Cold Drinks*),$E$5:$E$6,""))
COUNTIF funktionen returnerade en för varje delsträng som matchar. Eftersom " Chips " finns i Cell B5 , återges { 1:0 }.
TEXTJOIN(", ",TRUE,IF({1;0},$E$5:$E$6,""))
IF funktionen returnerade endast " Chips " eftersom endast det första värdet i dess argument var ett = True .
TEXTJOIN(", ",TRUE,{"Chips";""})
TEXTJOIN funktionen gjorde ingenting här eftersom endast ett värde från Lista Om det fanns många värden att matcha skulle alla värden ha returnerats med kommatecken (,) mellan dem som separator.
Slutligt resultat: Chips
Läs mer: Om cellen innehåller text lägger du till text i en annan cell i Excel
4. Använd en INDEX MATCH-formel för att returnera värdet om cellen innehåller specifik text
Detta är ett alternativ till TEXTJOIN formeln. Denna formel visar också vilken eller vilka strängar från Lista matchade.
Här har jag hämtat cellvärdena från LISTA kolumnen där de matchas med den Produkt och visade dem för det matchade värdet från Lista kolumn.
Formeln är följande:
=IFERROR(INDEX($E$5:$E$6, MATCH(1, COUNTIF(B5, "*"&$E$5:$E$6& "*"), 0)),""")
Uppdelning av formel:
=IFERROR(INDEX($E$5:$E$6,MATCH(1,COUNTIF(B5, "*"&$E$5:$E$6& "*"),0)),"")
Här kan Asterisk-tecken ( * ) är ett jokertecken. Det sökte efter " Chips " och " Kalla drycker " delsträng inom Cell B5 som är " Ruffles - Chips " sträng.
IFERROR(INDEX($E$5:$E$6,MATCH(1,COUNTIF("Ruffles - Chips",*Chips*,*Cold Drinks*),0)),"")
COUNTIF funktionen returnerade en för varje delsträng som matchar. Eftersom " Chips " finns i Cell B5 , återges { 1:0 }.
IFERROR(INDEX($E$5:$E$6,MATCH(1,{1;0}),0)),""))
MATCH funktionen returnerade ett eftersom det bara finns ett värde " Chips " som matchade.
IFERROR(INDEX($E$5:$E$6,1),"")
INDEX funktionen returnerade " Chips " eftersom det var värdet i Lista matris.
IFERROR("Chips","")
Här kan IFERROR funktionen används för att hantera felet som uppstår om det inte finns några träffar.
Slutligt resultat: Chips
Observera:
Här har jag visat cellen som matchade, men du kan visa vilken utdata du vill genom att ändra IF funktioner med den önskade utgången.
Läs mer: Excel-formel Om cellen innehåller text återger du värdet i en annan cell
5. Tillämpa EXACT-funktionen med IF och TEXTJOIN
Detta är en annan lösning på problemet i olika situationer. Här har jag hämtat cellvärdet från List-kolumnen med en enda medlem. Vi matchar detta värde med produkten och visar alla matchningsvärden i en enda cell.
Formeln är följande:
=TEXTJOIN(", ",TRUE,IF(EXACT(C5:C14,$F$5),B5:B14,""))
Fördelning av formler :
EXACT(C5:C14,$F$5)
Denna del kontrollerar vilka värden i Utbud C5:14 matcha med Cell F5 och återge TRUE och FALSK .
IF(EXACT(C5:C14,$F$5),B5:B14,"")
Denna del returnerar de namn som vi får TRUE .
TEXTJOIN(", ",TRUE,IF(EXACT(C5:C14,$F$5),B5:B14,""))
Slutligen sammanfogas alla namn med ett kommatecken efter varje namn.
Snabba anteckningar
Alla dessa formler här (utom den andra) är arrayformler. Det betyder att du måste trycka på Ctrl+Shift+Enter i stället för att bara trycka på Gå in på för att skriva in denna formel. Men om du är en Office 365 användare, kan du tillämpa dem genom att trycka på bara Ange.
Slutsats
I den här artikeln har jag minskat olika formler för olika fall för att returnera värde om en cell innehåller specifik text från en lista. Jag hoppas att du kunde hitta en lösning på ditt problem. Lämna en kommentar om du har några förslag eller frågor. Dessutom kan du besöka vår blogg för fler sådana artiklar.