![](https://cdn.wiki-base.com/3178765/excel_formula_find_longest_string_with_criteria__2.png.webp)
Všeobecný vzorec
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Zhrnutie
Ak chcete nájsť najdlhší reťazec v rozsahu s kritériami, môžete použiť maticový vzorec založený na indexoch INDEX, MATCH, LEN a MAX. V zobrazenom príklade je vzorec v F6:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Kde „názvy“ sú pomenovaný rozsah C5: C14 a „trieda“ je pomenovaný rozsah B5: B14.
Poznámka: toto je vzorec poľa a musí sa zadávať pomocou klávesov Control + Shift + Enter.
Vysvetlenie
Jadrom tohto vzorca je funkcia MATCH, ktorá pomocou zadaných kritérií vyhľadá pozíciu najdlhšieho reťazca:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Poznámka MATCH je nastavený na vykonávanie presnej zhody zadaním nuly pre typ zhody. Ako vyhľadávaciu hodnotu máme:
LEN(names)*(class=F5)
Funkcia LEN vráti pole výsledkov (dĺžok), jeden pre každý názov v zozname, kde class = "A" z bunky F5:
(5;6;8;6;6;0;0;0;0;0)
Takto sa efektívne odfiltruje celá trieda B a funkcia MAX potom vráti najväčšiu hodnotu 8.
Na zostrojenie vyhľadávacieho poľa používame rovnaký prístup:
LEN(names)*(class=F5)
A získate rovnaký výsledok:
(5;6;8;6;6;0;0;0;0;0)
Po spustení 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 potom vráti pozíciu 8 v zozname, 3, ktorý sa napája na INDEX takto:
=INDEX(names,3)
Nakoniec INDEX poslušne vráti hodnotu na 3. pozícii mien , čo je „Jonathan“.