
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".