Excel-formel: Finn lengste streng med kriterier -

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

Interessante artikler...