
Generisk formel
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Resumé
For at finde den længste streng i et interval med kriterier kan du bruge en matrixformel baseret på INDEX, MATCH, LENGE og MAX. I det viste eksempel er formlen i F6:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Hvor "navne" er det navngivne område C5: C14, og "klasse" er det navngivne område B5: B14.
Bemærk: dette er en matrixformel og skal indtastes med kontrol + skift + enter.
Forklaring
Kernen i denne formel er MATCH-funktionen, som lokaliserer positionen for den længste streng ved hjælp af leverede kriterier:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Bemærk, at MATCH er indstillet til at udføre et nøjagtigt match ved at angive nul for matchtype. For opslagsværdi har vi:
LEN(names)*(class=F5)
LEN-funktionen returnerer en matrix med resultater (længder), en for hvert navn på listen, hvor klasse = "A" fra celle F5:
(5;6;8;6;6;0;0;0;0;0)
Dette filtrerer effektivt hele klasse B ud, og MAX-funktionen returnerer derefter den største værdi, 8.
For at konstruere et opslagsarray bruger vi den samme tilgang:
LEN(names)*(class=F5)
Og få det samme resultat:
(5;6;8;6;6;0;0;0;0;0)
Efter LEN og MAX-kørsel har vi en MATCH-formel med disse værdier:
MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))
MATCH returnerer derefter positionen 8 på listen, 3, der føjes til INDEX sådan:
=INDEX(names,3)
Endelig returnerer INDEX pligtmæssigt værdien i 3. position af navne , som er "Jonathan".