
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.