
Generisk formel
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Sammendrag
For å finne den lengste strengen i et område med kriterier, kan du bruke en matriseformel basert på INDEKS, MATCH, LENN og MAKS. I eksemplet vist er formelen i F6:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Hvor "navn" er det navngitte området C5: C14, og "klasse" er det navngitte området B5: B14.
Merk: dette er en matriseformel og må angis med kontroll + skift + enter.
Forklaring
Kjernen i denne formelen er MATCH-funksjonen, som finner posisjonen til den lengste strengen ved bruk av oppgitte kriterier:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Merk MATCH er satt opp til å utføre en eksakt samsvar ved å oppgi null for kamptype. For oppslagsverdi har vi:
LEN(names)*(class=F5)
LEN-funksjonen returnerer en rekke resultater (lengder), en for hvert navn i listen der klasse = "A" fra celle F5:
(5;6;8;6;6;0;0;0;0;0)
Dette filtrerer effektivt ut hele klasse B, og MAX-funksjonen returnerer deretter den største verdien, 8.
For å konstruere en oppslagsmatrise bruker vi samme tilnærming:
LEN(names)*(class=F5)
Og få samme resultat:
(5;6;8;6;6;0;0;0;0;0)
Etter at LEN og MAX har kjørt, har vi en MATCH-formel med disse verdiene:
MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))
MATCH returnerer deretter posisjonen til 8 i listen, 3, som mates inn i INDEX slik:
=INDEX(names,3)
Til slutt returnerer INDEX verdifullt verdien i 3. posisjon av navn , som er "Jonathan".