Excel-formel: Markera celler som innehåller en av många -

Innehållsförteckning

Generisk formel

=SUMPRODUCT(--ISNUMBER(SEARCH(things,A1)))>0

Sammanfattning

För att markera celler som innehåller en av många textsträngar kan du använda en formel baserad på funktionerna ISNUMBER och SÖK, tillsammans med SUMPRODUCT-funktionen. I exemplet som visas är den villkorliga formateringen som tillämpas på B4: B11 baserad på denna formel:

=SUMPRODUCT(--ISNUMBER(SEARCH(things,B4)))>0

Förklaring

Arbetar inifrån och ut, den här delen av formeln söker efter varje cell i B4: B11 för alla värden i det angivna intervallet "saker":

--ISNUMBER(SEARCH(things,B4)

SÖK-funktionen returnerar positionen för värdet om det hittas, och #VALUE-felet om det inte hittas. För B4 kommer resultaten tillbaka i en array som denna:

(8;#VALUE!;#VALUE!)

ISNUMBER-funktionen ändrar alla resultat till SANT eller FALSKT:

(TRUE;FALSE;FALSE)

Det dubbla negativet framför ISNUMBER tvingar SANT / FALSKT till 1/0:

(1;0;0)

SUMPRODUCT-funktionen adderar sedan resultaten, som testas mot noll:

=SUMPRODUCT((1;0;0))>0

Alla resultat som inte är noll betyder att minst ett värde hittades, så formeln returnerar SANT och utlöser regeln.

Ignorera tomma saker

För att ignorera tomma celler i det namngivna intervallet "saker" kan du prova en modifierad formel så här:

=SUMPRODUCT(--ISNUMBER(SEARCH(IF(things"",things),B4)))>0

Detta fungerar så länge de textvärden du testar inte innehåller strängen "FALSE". Om de gör det kan du utöka IF-funktionen till att inkludera ett värde om falskt är känt för att inte förekomma i texten (t.ex. "zzzz", "####", etc.)

Skiftlägeskänsligt alternativ

SÖK är inte skiftlägeskänslig. För att även kontrollera fallet, ersätt SÖK med HITTA så:

=SUMPRODUCT(--ISNUMBER(FIND(things,A1)))>0

Förhindra falska matchningar

Ett problem med detta tillvägagångssätt är att du kan se falska matchningar orsakade av underlag som visas i längre ord. Om du till exempel försöker matcha "dr" kan du också hitta "Andrea", "drink", "dry", etc. eftersom "dr" visas i dessa ord. Detta händer eftersom SEARCH automatiskt utför en "innehåller" -matchning.

För en delvis korrigering kan du lägga till utrymme runt sökorden (dvs. "dr" eller "dr") för att undvika att fånga "dr" i ett annat ord. Men detta misslyckas om "dr" visas först eller sist i en cell, eller visas bredvid skiljetecken. Detta kan delvis åtgärdas genom att lägga till utrymme också runt originaltexten. För att lägga till utrymme i början och slutet av båda samtidigt kan du prova en sådan formel:

=SUMPRODUCT(--ISNUMBER(FIND(" "&things&" "," "&B4&" ")))>0

Detta kommer dock inte att lösa problem som orsakas av skiljetecken.

Om du behöver en mer komplett lösning är ett alternativ att normalisera texten först i en hjälpkolumn, var noga med att också lägga till ett ledande och efterföljande utrymme. Sedan kan du söka efter hela ord omgiven av mellanslag.

Intressanta artiklar...