Excel formülü: Birden çok eşleşmeyi ayrı sütunlara ayıklayın -

Özet

Hücrelere birden çok eşleşme çıkarmak için ayrı sütunlarda, INDEX ve SMALL'a dayalı bir dizi formülü kullanabilirsiniz. Gösterilen örnekte, F5'teki formül şöyledir:

(=IFERROR(INDEX(names,SMALL(IF(groups=$E5,ROW(names)-MIN(ROW(names))+1),COLUMNS($E$5:E5))),""))

Bu bir dizi formülüdür ve Control + Shift + Enter ile girilmelidir.

Formülü ilk hücreye girdikten sonra, diğer hücreleri doldurmak için aşağı ve çapraz sürükleyin.

Açıklama

Not: Bu formül iki adlandırılmış aralık kullanır: "adlar" C5: C11'e ve "gruplar" B5: B11'e karşılık gelir. Bu isimler de yukarıdaki ekran görüntüsünde tanımlanmıştır.

Bu formülün özü şudur: KÜÇÜK işlevini "n'inci eşleşmeye" karşılık gelen bir satır numarası oluşturmak için kullanıyoruz. Satır numarasını elde ettikten sonra, onu sadece o satırdaki değeri döndüren INDEX fonksiyonuna aktarırız.

İşin püf noktası, SMALL'un bu bitte IF tarafından dinamik olarak oluşturulmuş bir diziyle çalışıyor olmasıdır:

IF(groups=$E5,ROW(names)-MIN(ROW(names))+1)

Bu kod parçası, E5'teki değer için adlandırılmış aralık "grupları" nı test eder. Bulunursa, aşağıdakilerle oluşturulan göreli satır numaralarından oluşan bir diziden bir satır numarası döndürür:

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

Nihai sonuç, eşleşmenin olduğu yerlerde sayıları içeren bir dizidir ve değilse YANLIŞ:

(1; YANLIŞ; YANLIŞ; YANLIŞ; YANLIŞ; 6; YANLIŞ)

Bu dizi KÜÇÜK olur. SMALL (nth) için k değeri, genişleyen bir aralıktan gelir:

COLUMNS($E$5:E5)

Sonuç tablosu boyunca kopyalandığında, aralık genişleyerek k (nth) 'nin artmasına neden olur. KÜÇÜK işlevi, dizi olarak adlandırılmış aralık "adlar" ile INDEX işlevine satır_sayısı olarak sağlanan her eşleşen satır numarasını döndürür.

Hataları işleme

SÜTUNLAR k için var olmayan bir değer döndürdüğünde, KÜÇÜK bir #SAYI hatası verir. Bu, tüm maçlar gerçekleştikten sonra gerçekleşir. Hatayı bastırmak için, hataları yakalamak ve boş bir dize ("") döndürmek için formülü EĞERHATA işlevine sarıyoruz.

Ilginç makaleler...