
Genel formül
(=INDEX(rng1,MATCH(MAX(LEN(rng1)*(rng2=criteria)),LEN(rng1)*(rng2=criteria),0)))
Özet
Ölçüt içeren bir aralıktaki en uzun dizeyi bulmak için, INDEX, MATCH, LEN ve MAX'a dayalı bir dizi formülü kullanabilirsiniz. Gösterilen örnekte, F6'daki formül şöyledir:
(=INDEX(names,MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)))
Burada "adlar", adlandırılmış aralık C5: C14 ve "sınıf", adlandırılmış aralık B5: B14'tür.
Not: Bu bir dizi formülüdür ve kontrol + shift + enter ile girilmelidir.
Açıklama
Bu formülün özü, sağlanan ölçütleri kullanarak en uzun dizenin konumunu belirleyen MATCH işlevidir:
MATCH(MAX(LEN(names)*(class=F5)),LEN(names)*(class=F5),0)
Not MATCH, eşleme türü için sıfır sağlayarak tam eşleme yapacak şekilde ayarlanmıştır. Arama değeri için elimizde:
LEN(names)*(class=F5)
UZUNLUK işlevi, F5 hücresinden sınıf = "A" olduğu listedeki her ad için bir sonuç dizisi (uzunluklar) döndürür:
(5;6;8;6;6;0;0;0;0;0)
Bu, tüm B Sınıfını etkili bir şekilde filtreler ve MAX işlevi daha sonra en büyük değer olan 8'i döndürür.
Bir arama dizisi oluşturmak için aynı yaklaşımı kullanıyoruz:
LEN(names)*(class=F5)
Ve aynı sonucu elde edin:
(5;6;8;6;6;0;0;0;0;0)
LEN ve MAX çalıştırıldıktan sonra, şu değerlere sahip bir MATCH formülümüz var:
MATCH(8,(5;6;8;6;6;0;0;0;0;0),0))
MATCH daha sonra, aşağıdaki gibi INDEX'e beslenen 3 listesindeki 8 konumunu döndürür:
=INDEX(names,3)
Son olarak, INDEX görev bilinciyle adların 3. pozisyonundaki değeri döndürür , bu "Jonathan".