Excel vzorec: Najděte nejdelší řetězec s kritérii -

Obecný vzorec

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

souhrn

Chcete-li najít nejdelší řetězec v rozsahu s kritérii, můžete použít maticový vzorec založený na INDEX, MATCH, LEN a MAX. V zobrazeném příkladu je vzorec v F6:

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

Kde „names“ je pojmenovaný rozsah C5: C14 a „class“ je pojmenovaný rozsah B5: B14.

Poznámka: toto je maticový vzorec a musí být zadán pomocí kláves Control + Shift + Enter.

Vysvětlení

Jádrem tohoto vzorce je funkce MATCH, která pomocí zadaných kritérií vyhledá pozici nejdelšího řetězce:

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

Poznámka MATCH je nastaven na provádění přesné shody zadáním nuly pro typ shody. Pro vyhledávací hodnotu máme:

LEN(names)*(class=F5)

Funkce LEN vrací pole výsledků (délek), jeden pro každý název v seznamu, kde class = "A" z buňky F5:

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

Tím se efektivně odfiltruje celá třída B a funkce MAX poté vrátí největší hodnotu 8.

K vytvoření vyhledávacího pole používáme stejný přístup:

LEN(names)*(class=F5)

A získáte stejný výsledek:

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

Po spuštění LEN a MAX máme MATCH vzorec s těmito hodnotami:

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

MATCH pak vrátí pozici 8 v seznamu, 3, který se přivádí do INDEXu takto:

=INDEX(names,3)

Nakonec INDEX poslušně vrátí hodnotu na 3. pozici jmen , což je „Jonathan“.

Zajímavé články...