
Formuła ogólna
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Podsumowanie
Aby znaleźć najdłuższy ciąg w zakresie z kryteriami, możesz użyć formuły tablicowej opartej na INDEKSIE, PODAJNIKU, DŁ. I MAKS. W pokazanym przykładzie formuła w F6 to:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Gdzie „nazwy” to nazwany zakres C5: C14, a „klasa” to nazwany zakres B5: B14.
Uwaga: to jest formuła tablicowa i należy ją wprowadzić za pomocą Ctrl + Shift + Enter.
Wyjaśnienie
Rdzeniem tej formuły jest funkcja PODAJ.POZYCJĘ, która lokalizuje pozycję najdłuższego ciągu na podstawie podanych kryteriów:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Uwaga PODAJANIE jest skonfigurowane do wykonywania dokładnego dopasowania, podając zero dla typu dopasowania. Dla wartości wyszukiwania mamy:
LEN(names)*(class=F5)
Funkcja DŁ zwraca tablicę wyników (długości), po jednym dla każdej nazwy na liście, gdzie klasa = „A” z komórki F5:
(5;6;8;6;6;0;0;0;0;0)
To skutecznie odfiltrowuje całą klasę B, a funkcja MAX zwraca następnie największą wartość, 8.
Aby skonstruować tablicę wyszukiwania, używamy tego samego podejścia:
LEN(names)*(class=F5)
I uzyskaj ten sam wynik:
(5;6;8;6;6;0;0;0;0;0)
Po uruchomieniu LEN i MAX mamy formułę MATCH z następującymi wartościami:
MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))
Następnie PODAJ.POZYCJĘ zwraca pozycję 8 na liście, 3, która trafia do INDEKSU w następujący sposób:
=INDEX(names,3)
Na koniec INDEKS sumiennie zwraca wartość na trzeciej pozycji nazwy , czyli „Jonathan”.