Excel formülü: Son eşleşmeyi al -

İçindekiler

Genel formül

(=MAX(IF(criteria,ROW(rng)-MIN(ROW(rng))+1)))

Özet

Bir arama değerinin son eşleşmesinin (yani son oluşumunun) konumunu almak için EĞER, SATIR, İNDİS, KAÇINCI ve MAK işlevlerine dayalı bir dizi formülü kullanabilirsiniz. Gösterilen örnekte, H6'daki formül şöyledir:

(=MAX(IF(names=H5,ROW(names)-MIN(ROW(names))+1)))

Burada "adlar" adlandırılmış aralık C4: C11'dir.

Not: Bu bir dizi formülüdür ve kontrol + shift + enter ile girilmelidir.

Açıklama

Bu formülün özü, belirli bir aralık için bir değerle eşleşen satır numaralarının bir listesini oluşturmamız ve ardından en son eşleşen değere karşılık gelen en büyük satır numarasını elde etmek için MAX işlevini kullanmamızdır. Yalnızca kolaylık sağlamak için adlandırılmış "adlar" aralığını kullanıyoruz.

İçten dışa doğru çalışarak, formülün bu bölümü göreceli bir satır numarası kümesi oluşturacaktır:

ROW(names)-MIN(ROW(names))+1

Yukarıdaki ifadenin sonucu şuna benzer bir sayı dizisidir:

(1;2;3;4;5;6;7;8)

Tablodaki 8 satıra karşılık gelen 8 sayı aldığımıza dikkat edin. Formülün bu bölümünün nasıl çalıştığı hakkında ayrıntılar için bu sayfaya bakın.

Bu formülün amacı için, yalnızca eşleşen değerler için satır numaraları istiyoruz, bu nedenle değerleri şu şekilde filtrelemek için EĞER işlevini kullanıyoruz:

IF(names=H5,ROW(names)-MIN(ROW(names))+1)

Bu, şuna benzer bir dizi ile sonuçlanır:

(1;FALSE;FALSE;4;FALSE;FALSE;7;FALSE)

Bu dizinin hala sekiz öğe içerdiğini unutmayın. Ancak, yalnızca adlandırılmış aralıktaki değerin "amy" ye eşit olduğu satır numaraları kaldı (yani 1, 4, 7). Dizideki diğer tüm öğeler, EĞER işlevindeki mantıksal testi geçemedikleri için YANLIŞ.

Son olarak, IF işlevi bu diziyi MAX işlevine iletir. MAX, dizideki en yüksek değeri, adın "amy" olduğu son satır numarasına karşılık gelen 7 sayısını döndürür. Eşleşen son satır numarasını öğrendikten sonra, bu konumda bir değer almak için INDEX'i kullanabiliriz.

Sondan ikinciye vb.

İkinciden son konuma, üçünciden sona vb. Almak için MIN işlevinden LARGE işlevine şu şekilde geçebilirsiniz:

(=LARGE(IF(criteria,ROW(rng)-MIN(ROW(rng))+1),k))

k "n'inci en büyük" ü temsil eder. Örneğin, yukarıdaki örnekte ikinci ve son eşleşmeyi elde etmek için şunları kullanabilirsiniz:

(=LARGE(IF(names=H5,ROW(names)-MIN(ROW(names))+1),2))

Daha önce olduğu gibi, bu bir dizi formülüdür ve kontrol + shift + enter ile girilmelidir.

Ilginç makaleler...