Excel'de Birden Fazla Sonuç Getirme: DÜŞEYARA Yerine FİLTRE
Yayın: · Son güncelleme:
Kısaca
DÜŞEYARA yalnız ilk eşleşmeyi getirir. Bir müşterinin bütün siparişlerini almak için Microsoft 365 ve Excel 2021'de =FİLTRE(B2:C9;A2:A9="Deniz Market") kullanılır; sonuçları tek hücrede birleştirmek için METİNBİRLEŞTİR eklenir.
Adım adım
- 1
Aranan değeri bir hücreye yazın
Müşteri adını F1 gibi bir hücreye girin; formüller bu hücreyi okusun.
- 2
Sonuç alanını boş bırakın
Formülün altında ve sağında, eşleşme sayısı kadar boş hücre olduğundan emin olun.
- 3
FİLTRE formülünü yazın
=FİLTRE(B2:C9;A2:A9=F1;"Sipariş yok") ile eşleşen bütün satırları getirin.
- 4
Gerekirse tek hücrede birleştirin
=METİNBİRLEŞTİR(", ";DOĞRU;FİLTRE(B2:B9;A2:A9=F1)) ile ürünleri virgülle ayrılmış tek bir metne çevirin.
- 5
Eski sürümde İNDİS ve TOPLAMA kullanın
=EĞERHATA(İNDİS($B$2:$B$9;TOPLAMA(15;6;(SATIR($A$2:$A$9)-1)/($A$2:$A$9=$F$1);SATIR(A1)));"") formülünü yazıp aşağı çekin.
İçindekiler
DÜŞEYARA neden yalnız ilk sonucu getirir?
DÜŞEYARA aranan değeri bulduğu ilk satırda durur ve o satırdaki değeri döndürür. Sipariş listesinde Deniz Market üç kez geçiyorsa formül her zaman ilk siparişi, yani peyniri getirir. Bu davranış bir hata değil, fonksiyonun tasarımıdır; dolayısıyla DÜŞEYARA'yı zorlamak yerine birden çok satır döndürebilen bir fonksiyona geçmek gerekir.
Microsoft 365 ve Excel 2021'de bu fonksiyon FİLTRE'dir. Eski sürümlerde ise aynı sonuca İNDİS ve TOPLAMA'dan oluşan daha uzun bir formülle ulaşılır.
FİLTRE ile bütün eşleşen satırlar
FİLTRE iki argümanla çalışır: döndürülecek alan ve hangi satırların alınacağını belirten koşul. Ürün ve tutar sütunlarını seçip koşul olarak müşteri sütununun Deniz Market'e eşit olmasını verirsiniz. Formül yazdığınız hücreden başlayarak aşağı ve sağa doğru yayılır.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Müşteri | Ürün | Tutar | ||
| 2 | Akın Gıda | Zeytinyağı | 1.850 | Peynir | |
| 3 | Deniz Market | Peynir | 960 | ||
| 4 | Ova Tarım | Bulgur | 640 | ||
| 5 | Deniz Market | Zeytin | 720 | ||
| 6 | Akın Gıda | Bal | 1.100 | ||
| 7 | Deniz Market | Reçel | 380 | ||
| 8 | Yıldız Ltd. | Çay | 2.150 | ||
| 9 | Ova Tarım | Mercimek | 540 |
=FİLTRE(B2:C9;A2:A9="Deniz Market")=FILTER(B2:C9,A2:A9="Deniz Market")Türkçe Excel'de bağımsız değişkenler noktalı virgülle (;), İngilizce Excel'de virgülle (,) ayrılır.
E2 hücresinin sonucu: Peynir
Deniz Market'in peynir (960), zeytin (720) ve reçel (380) siparişleri E2'den başlayarak üç satır, iki sütun olarak yayılır. E2'de Peynir görünür.
Sonuç üç satır ve iki sütundan oluşur. Altındaki ya da sağındaki hücrelerden biri doluysa formül #YAYILMA! hatası verir; sonuç alanını boş bırakmanız yeterlidir.
Döndürülecek alanı istediğiniz gibi seçebilirsiniz. Yalnız ürün adları gerekiyorsa B2:B9 yazarsınız; müşteri adı da sonuçta görünsün istiyorsanız A2:C9 yazarsınız. Sütunların sırasını değiştirmek isterseniz alanı tek tek seçmek yerine sonucu bir başka dinamik dizi fonksiyonuna verirsiniz; sıralama için SIRALA bunun en sık görülen örneğidir.
Aranan müşteriyi formüle sabit yazmak yerine bir hücreye bağlayın. =FİLTRE(B2:C9;A2:A9=F1) yazdığınızda F1'deki adı değiştirerek her müşterinin siparişlerini aynı alanda görebilirsiniz.
Sonuç bulunamadığında
Koşulu sağlayan satır yoksa FİLTRE #HESAPLA! hatası döndürür. Üçüncü argüman bu durumda gösterilecek değeri belirler: =FİLTRE(B2:C9;A2:A9=F1;"Sipariş yok"). Özellikle aranan değerin bir açılır listeden seçildiği raporlarda bu argümanı boş bırakmamak iyi bir alışkanlıktır.
Sonuçları tek hücrede birleştirmek
Bazen eşleşmeleri alt alta değil, tek hücrede virgülle ayrılmış olarak görmek istersiniz. Müşteri listesinin yanına "aldığı ürünler" sütunu eklemek buna iyi bir örnektir. FİLTRE'nin sonucunu METİNBİRLEŞTİR'e verdiğinizde yayılma olmaz ve tek bir metin elde edersiniz.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Müşteri | Ürün | Tutar | ||
| 2 | Akın Gıda | Zeytinyağı | 1.850 | Peynir, Zeytin, Reçel | |
| 3 | Deniz Market | Peynir | 960 | ||
| 4 | Ova Tarım | Bulgur | 640 | ||
| 5 | Deniz Market | Zeytin | 720 | ||
| 6 | Akın Gıda | Bal | 1.100 | ||
| 7 | Deniz Market | Reçel | 380 | ||
| 8 | Yıldız Ltd. | Çay | 2.150 | ||
| 9 | Ova Tarım | Mercimek | 540 |
=METİNBİRLEŞTİR(", ";DOĞRU;FİLTRE(B2:B9;A2:A9="Deniz Market"))=TEXTJOIN(", ",TRUE,FILTER(B2:B9,A2:A9="Deniz Market"))Türkçe Excel'de bağımsız değişkenler noktalı virgülle (;), İngilizce Excel'de virgülle (,) ayrılır.
E2 hücresinin sonucu: Peynir, Zeytin, Reçel
FİLTRE üç ürünü döndürür, METİNBİRLEŞTİR bunları listedeki sırayla virgül ve boşlukla birleştirir.
METİNBİRLEŞTİR'in ikinci argümanı DOĞRU olduğunda boş hücreler atlanır. Böylece ürün adı girilmemiş siparişler metinde arka arkaya iki virgül bırakmaz.
Birden fazla koşulla sonuç getirmek
FİLTRE'de koşulları çarparak VE, toplayarak YA DA mantığı kurarsınız. Deniz Market'in 500 TL üzerindeki siparişleri için koşul (A2:A9="Deniz Market")*(C2:C9>500) olur ve peynir ile zeytin döner. Sonucu tutara göre sıralamak isterseniz formülü SIRALA ile sarabilirsiniz: =SIRALA(FİLTRE(B2:C9;A2:A9=F1);2;-1).
Eski sürümler için İNDİS ve TOPLAMA
FİLTRE olmayan sürümlerde eşleşen satırların numaralarını tek tek bulmak gerekir. (SATIR($A$2:$A$9)-1)/($A$2:$A$9="Deniz Market") ifadesi koşulu sağlayan satırlar için sıra numarasını, sağlamayanlar için #SAYI/0! hatasını üretir. TOPLAMA'nın 15 numaralı hesabı KÜÇÜK'tür ve 6 seçeneği hataları atlar. Böylece TOPLAMA n'inci eşleşmenin numarasını, İNDİS de o satırdaki ürünü getirir.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Müşteri | Ürün | Tutar | ||
| 2 | Akın Gıda | Zeytinyağı | 1.850 | Zeytin | |
| 3 | Deniz Market | Peynir | 960 | ||
| 4 | Ova Tarım | Bulgur | 640 | ||
| 5 | Deniz Market | Zeytin | 720 | ||
| 6 | Akın Gıda | Bal | 1.100 | ||
| 7 | Deniz Market | Reçel | 380 | ||
| 8 | Yıldız Ltd. | Çay | 2.150 | ||
| 9 | Ova Tarım | Mercimek | 540 |
=EĞERHATA(İNDİS($B$2:$B$9;TOPLAMA(15;6;(SATIR($A$2:$A$9)-1)/($A$2:$A$9="Deniz Market");2));"")=IFERROR(INDEX($B$2:$B$9,AGGREGATE(15,6,(ROW($A$2:$A$9)-1)/($A$2:$A$9="Deniz Market"),2)),"")Türkçe Excel'de bağımsız değişkenler noktalı virgülle (;), İngilizce Excel'de virgülle (,) ayrılır.
E2 hücresinin sonucu: Zeytin
Deniz Market listenin 2., 4. ve 6. satırlarında geçiyor. TOPLAMA hataları atlayıp ikinci en küçük numarayı, 4'ü seçer; İNDİS 4. ürünü, zeytini getirir.
Formüldeki 2'yi 1, 2, 3 diye değiştirerek birinci, ikinci ve üçüncü eşleşmeyi alırsınız. Pratikte bu sayı yerine SATIR(A1) yazılır ve formül aşağı çekildikçe 1, 2, 3 olarak artar. Eşleşmeler bitince TOPLAMA hata verir, EĞERHATA da boş metin döndürür.
Aynı işi KÜÇÜK ve EĞER ile kuran yaygın bir yazım da vardır: =İNDİS($B$2:$B$9;KÜÇÜK(EĞER($A$2:$A$9=$F$1;SATIR($A$2:$A$9)-1);SATIR(A1))). Bu biçim Excel 2019 ve öncesinde Ctrl+Shift+Enter ile dizi formülü olarak girilmelidir. TOPLAMA'lı formül ise Excel 2010'dan bu yana normal Enter ile çalışır.
Kaç sonuç geleceğini önceden görmek
FİLTRE'nin kaç satıra yayılacağını bilmek, sonuç alanının altına başka bir tablo koyarken işe yarar. =EĞERSAY(A2:A9;F1) aranan müşterinin kaç siparişi olduğunu verir. Örnek listede Deniz Market için sonuç 3'tür.
Eski sürüm formülünü kopyalarken de bu sayıdan yararlanırsınız. Formülü en fazla beklediğiniz eşleşme kadar satıra çekmek yeterlidir; fazla satırlar boş görünür.
Raporunuza uygulayın
Raporunuzda aranan değeri tek bir hücreye koyun ve sonuç alanının altını boş bırakın. Microsoft 365 kullanıyorsanız FİLTRE'yi üçüncü argümanıyla birlikte yazın; eski sürümlerle paylaşılan dosyalarda İNDİS ve TOPLAMA formülünü beklediğiniz en fazla eşleşme kadar satıra kopyalayın.
Bu rehberde kullanılan fonksiyonlar
Aynı konudaki diğer rehberler: Excel'de Dinamik Diziler
Sıkça Sorulan Sorular
DÜŞEYARA ile birden fazla satır nasıl getirilir?
DÜŞEYARA yalnız ilk eşleşmeyi döndürür. Microsoft 365 ve Excel 2021'de =FİLTRE(B2:C9;A2:A9=F1) bütün eşleşen satırları getirir; eski sürümlerde İNDİS ve TOPLAMA formülü kullanılır.
FİLTRE formülü neden #YAYILMA! hatası veriyor?
Sonucun yayılacağı alanda dolu bir hücre var. Formülün altını ve sağını boşaltın; hata kendiliğinden kalkar.
Birden fazla sonucu tek hücrede nasıl gösteririm?
FİLTRE'yi METİNBİRLEŞTİR içine yazın: =METİNBİRLEŞTİR(", ";DOĞRU;FİLTRE(B2:B9;A2:A9=F1)). Sonuç virgülle ayrılmış tek bir metindir.