Excel-formel: Hitta längsta sträng med kriterier -

Generisk formel

(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))

Sammanfattning

För att hitta den längsta strängen i ett intervall med kriterier kan du använda en matrisformel baserad på INDEX, MATCH, LEN och MAX. I exemplet som visas är formeln i F6:

(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))

Där "namn" är det namngivna intervallet C5: C14 och "klass" är det namngivna intervallet B5: B14.

Obs: detta är en matrisformel och måste anges med kontroll + skift + enter.

Förklaring

Kärnan i denna formel är MATCH-funktionen, som lokaliserar positionen för den längsta strängen med angivna kriterier:

MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)

Obs! MATCH är inställd på att utföra en exakt matchning genom att ange noll för matchningstyp. För uppslagsvärde har vi:

LEN(names)*(class=F5)

LEN-funktionen returnerar en rad resultat (längder), en för varje namn i listan där class = "A" från cell F5:

(5;6;8;6;6;0;0;0;0;0)

Detta filtrerar effektivt bort hela klass B, och MAX-funktionen returnerar sedan det största värdet, 8.

För att konstruera en uppslagsmatris använder vi samma metod:

LEN(names)*(class=F5)

Och få samma resultat:

(5;6;8;6;6;0;0;0;0;0)

Efter körning av LEN och MAX har vi en MATCH-formel med följande värden:

MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))

MATCH returnerar sedan positionen 8 i listan, 3, som matas in i INDEX så här:

=INDEX(names,3)

Slutligen returnerar INDEX pliktigt värdet i den tredje positionen av namnen , vilket är "Jonathan".

Intressanta artiklar...