Excel formülü: Ölçütlerle en uzun dizeyi bulun -

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".

Ilginç makaleler...