Excel-formel: Hämta den senaste matchningscellen innehåller

Generisk formel

=LOOKUP(2,1/SEARCH(things,A1),things)

Sammanfattning

För att kontrollera en cell för en av flera saker och returnera den senaste matchningen i listan kan du använda en formel baserad på LOOKUP och SEARCH-funktionerna. Om flera träffar hittas returnerar formeln den sista matchningen från listan med "saker".
I exemplet som visas är formeln i C5:

=LOOKUP(2,1/SEARCH(things,B5),things)

Förklaring

Kontext: du har en lista med saker i det namngivna intervallet "saker" (E5: E8), och du vill kontrollera celler i kolumn B för att se om de innehåller dessa saker. Om så är fallet vill du returnera det sista föremålet från "saker" som hittades.

I denna formel används SÖK-funktionen för att söka celler i kolumn B så här:

SEARCH(things,B5)

När SEARCH hittar en matchning returnerar den matchningens position i cellen som söks. När sökningen inte hittar en matchning returnerar den #VALUE-felet. Eftersom vi ger SEARH mer än en sak att leta efter kommer det att ge mer än ett resultat. I exemplet som visas returnerar SEARCH en rad resultat så här:

(8;24;#VALUE!;#VALUE!)

Denna matris används sedan som delare för siffran 1. Resultatet är en matris som består av fel och decimalvärden. Felen representerar saker som inte hittats, och decimalvärdena representerar saker som hittats. I exemplet som visas ser matrisen ut så här:

(0.125;0.0416666666666667;#VALUE!;#VALUE!)

Denna matris fungerar som "lookup_vector" för LOOKUP-funktionen. Uppslagsvärdet tillhandahålls som nummer 2, och resultatvektorn är det namngivna intervallet "saker". Det här är den smarta delen.

Formeln är konstruerad på ett sådant sätt att uppslagsvektorn aldrig kommer att innehålla ett värde större än 1, medan uppslagsvärdet är 2. Detta innebär att uppslagsvärdet aldrig kommer att hittas. I det här fallet kommer LOOKUP att matcha det sista numeriska värdet som hittades i arrayen, vilket motsvarar det sista "sak" som hittades av SEARCH.

Slutligen, med hjälp av det namngivna intervallet "saker" som tillhandahålls som resultatvektor, returnerar LOOKUP det senast hittade.

Med hårdkodade värden

Att använda ett intervall som "saker" gör det enkelt att ändra listan med söktermer (och lägga till fler söktermer), men det är inte ett krav. Du kan också hårdkoda värden direkt i formeln så här:

=LOOKUP(2,1/SEARCH(("red","blue","green"),B5),("red","blue","green"))

Intressanta artiklar...