Excel-formule: vind de langste string met criteria -

Generieke formule

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

Samenvatting

Om de langste tekenreeks in een bereik met criteria te vinden, kunt u een matrixformule gebruiken op basis van INDEX, MATCH, LEN en MAX. In het getoonde voorbeeld is de formule in F6:

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

Waarbij "namen" het benoemde bereik C5: C14 is, en "klasse" het benoemde bereik B5: B14.

Opmerking: dit is een matrixformule en moet worden ingevoerd met control + shift + enter.

Uitleg

De kern van deze formule is de MATCH-functie, die de positie van de langste string lokaliseert met behulp van de opgegeven criteria:

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

Opmerking MATCH is ingesteld om een ​​exacte overeenkomst uit te voeren door nul op te geven voor het overeenkomsttype. Voor opzoekwaarde hebben we:

LEN(names)*(class=F5)

De functie LEN retourneert een reeks resultaten (lengtes), één voor elke naam in de lijst waarbij class = "A" uit cel F5:

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

Dit filtert effectief alle Klasse B eruit en de MAX-functie retourneert dan de grootste waarde, 8.

Om een ​​lookup-array te construeren, gebruiken we dezelfde aanpak:

LEN(names)*(class=F5)

En krijg hetzelfde resultaat:

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

Nadat LEN en MAX zijn uitgevoerd, hebben we een MATCH-formule met deze waarden:

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

MATCH retourneert dan de positie van 8 in de lijst, 3, die als volgt in INDEX wordt ingevoerd:

=INDEX(names,3)

Ten slotte retourneert INDEX plichtsgetrouw de waarde op de 3e positie van namen , wat "Jonathan" is.

Interessante artikelen...