EXCEL'DE DİNAMİK DİZİLERLE KPI HESAPLAMALARI YAPMAK

Excel'de dinamik dizilerle KPI hesaplamak, hücreye yazılan tek bir formülün sonuçları aşağı ve yana "yaydığı" spill motoruyla, statik özet tabloları yerine kendiliğinden güncellenen canlı paneller kurmak demektir. Kaynak tabloya yeni satır eklendiğinde panel genişler, filtre kriteri değiştiğinde sonuç tek hücrede güncellenir, sıralama-benzersizleştirme-toplama tek formül zincirine sığar. Bu sayfada dinamik dizinin ne olduğunu, FİLTRE-SIRALA-BENZERSİZ-SIRALI-SIRALAÖLÇÜT fonksiyonlarının KPI bağlamında nasıl kullanıldığını, spill range ile # operatörünü ve üretim-satış-finans-İK senaryolarına nasıl indiğini somut örneklerle bulacaksınız.
1. Dinamik Dizi Mantığı ve Yayılma Davranışı Aslında Neyi Değiştirdi?
Klasik Excel'de bir formül tek hücreye girilirdi; çoklu sonuç istiyorsan ya formülü aşağı kopyalardın ya da CTRL+SHIFT+ENTER ile dizi formülü yazardın. Modern dinamik dizi motoru bu mantığı tersine çevirdi: bir formül birden fazla değer döndürürse Excel bunları kendiliğinden alttaki ve yandaki boş hücrelere yayar. Bu davranışa "spill" (yayılma) deniyor.
Yayılma alanının ilk hücresi formülü taşır; geri kalan hücreler ona bağlı sonuç hücreleridir. Yayılan aralığa tek başvuruyla erişmek için hash operatörü kullanılır: A2 yerine A2# yazdığında, A2'den başlayıp aşağı doğru ne kadar yayılmışsa hepsini temsil eder. Aralık büyüyüp küçüldükçe başvuru kendiliğinden ayarlanır, formülü düzenlemek gerekmez.
Üç davranış pratikte sürekli karşımıza çıkar. #YAYIL! hatası, formülün yayılacağı hücrelerden biri doluyken görünür; engel kaldırıldığında formül kendiliğinden açılır. Tablo nesnesinin içinde yazılan dinamik dizi formülleri yayılmaz — Tablo zaten satır bazlı çalışır. Birleştirilmiş hücreler yayılmayı bozar; KPI sayfasında merge cell mümkün olduğunca azaltılır. Microsoft'un Excel ürün dokümantasyonu her dinamik dizi fonksiyonu için bu sınır durumları örnekli açıklar; iş yoğunluğunda formülü ezberden yazmak yerine bu sayfayı sık ziyaret etmek hata avına vakit harcamayı kısaltır.
2. FİLTRE, SIRALA, BENZERSİZ ve SIRALI Fonksiyonlarının Anatomisi

KPI hesaplamasının omurgası dört fonksiyon: filtreleme, sıralama, benzersizleştirme ve sıralı sayı üretme. İngilizce arayüzde FILTER, SORT, UNIQUE, SEQUENCE; Türkçe arayüzde FİLTRE, SIRALA, BENZERSİZ, SIRALI olarak görünür. Yanlarına SIRALAÖLÇÜT (SORTBY) ve LET eklenince paneli kurmak için yeterli alet kutusu oluşur.
- FİLTRE:
=FİLTRE(dizi; dahil; [boşsa])— Belirtilen koşulu sağlayan satırları döndürür. Örnek:=FİLTRE(Satis[Tutar]; Satis[Bolge]="Marmara") - BENZERSİZ:
=BENZERSİZ(dizi; [sütun_bazlı]; [tam_eşsiz])— Bir aralıktaki tekrarsız değerleri çıkarır. Aktif ürün listesi, şube listesi, müşteri kategorisi üretmek için ideal. - SIRALA:
=SIRALA(dizi; [sıra_no]; [yön])— Veriyi belirtilen sütuna göre artan/azalan sıralar.=SIRALA(KPI#; 2; -1)ikinci sütuna göre azalan. - SIRALAÖLÇÜT:
=SIRALAÖLÇÜT(dizi; ölçüt1; yön1; ...)— Dizi dışı bir kritere göre sıralama. Örnek: ürünleri ada göre değil aylık satışa göre dizmek. - SIRALI:
=SIRALI(satır; [sütun]; [başlangıç]; [adım])— 1'den N'e kadar sayı dizisi üretir. SIRALI(12) on iki ayı, SIRALI(30) bir ay içindeki günleri verir. - LET:
=LET(ad1; değer1; ...; sonuç)— Formül içinde değişken tanımlar; aynı alt ifadeyi tekrar tekrar yazmaz, performansı düşürmez, formülü okunaklı yapar.
Bu fonksiyonların KPI bağlamındaki gücü iç içe yerleştirildiklerinde ortaya çıkıyor. =SIRALA(BENZERSİZ(FİLTRE(Satis[Urun]; Satis[Tarih]>=B1)); 1; 1) formülü tek hücreye yazılır; B1 tarihinden sonra satılan benzersiz ürünleri alfabetik sıralı olarak yayar. Yeni satış eklendiğinde liste otomatik genişler.
3. Türk Şirketlerinde KPI Senaryoları: Üretim, Satış, Perakende
Soyut formülün anlamı somut iş bağlamına oturduğunda netleşiyor. Türkiye'de orta ölçekli üretim, satış ve perakende ekiplerinin haftalık-aylık takip ettiği KPI başlıkları büyük ölçüde örtüşür; dinamik dizi yapısı bu başlıkların hemen hepsine uyar.
Bursa Demirtaş OSB'deki bir otomotiv yan sanayisinde üretim KPI'sı şöyle kuruluyor: vardiya başında giriş sayacı, fire oranı, hat duruş süresi, OEE (Genel Ekipman Etkinliği). Veri vardiya sonu Excel'e düşer; KPI sayfası dinamik dizilerle özet üretir.
- Aktif iş emirleri:
=BENZERSİZ(FİLTRE(Uretim[IsEmri]; Uretim[Durum]="Acik")) - Vardiya bazlı fire oranı:
=ÇOKETOPLA(Uretim[Fire]; Uretim[Vardiya]; D2#) / ÇOKETOPLA(Uretim[Uretim_Miktari]; Uretim[Vardiya]; D2#) - OEE eşik altı vardiyalar:
=FİLTRE(OEE#; OEE_Oran#<0,75; "Tüm vardiyalar hedef üzerinde") - En yüksek 5 fire kalemi:
=İNDİS(SIRALAÖLÇÜT(Fire#; Tutar#; -1); SIRALI(5))
Konya'da bir tarım makineleri üreticisi, bölge bayilerinden gelen satış verilerini benzer mantıkla izliyor. Marmara, Ege, İç Anadolu, Akdeniz bölgeleri için aylık ciro, kalem adet, ortalama sepet tutarı hesaplanıyor. =BENZERSİZ(Satis[Bolge]) bölge listesini, yanına yerleştirilen =ÇOKETOPLA(Satis[Tutar]; Satis[Bolge]; H2#) bölge bazlı toplamı, üçüncü sütundaki =H2#/TOPLA(Satis[Tutar]) payı verir. Yeni bayi açıldığında veya bir bölge listeden düştüğünde formüller dokunulmadan güncellenir.
Perakende tarafında, İstanbul'da bir hızlı tüketim zinciri haftalık SKU performansı için aynı yapıyı kullanıyor. Hedefe karşı gerçekleşme, kategori bazlı katkı, mağaza karşılaştırması — hepsi tek bir KPI sayfasında. Düşük performans gösteren mağazaları otomatik yakalamak için: =FİLTRE(Magaza[Ad]; (Magaza[Gerceklesme]/Magaza[Hedef])<0,8). Sonuç sıfır mağaza olabilir, üç mağaza olabilir; formül aynı kalır, panel kendini ayarlar. Sistematik KPI kurma akışını saha senaryolarıyla öğrenmek isteyenler için Excel eğitimi dinamik dizi-pivot-Power Query üçlüsünü birlikte aktarır.
4. Tek Hücrede KPI Bandı Nasıl Kurulur?
KPI panelinin üst bandı genellikle dört-altı kart içerir: bu ay toplam satış, geçen aya göre değişim, hedef gerçekleşme oranı, en iyi ürün, en iyi bölge, kritik uyarı. Klasik yöntemde her kart için ayrı ÇOKETOPLA, ayrı EĞER zinciri yazılırdı. Dinamik dizilerle bant tek bir LET formülüyle kurulabilir.
Örneğin "bu ay en çok satan beş ürünü tutar bilgisiyle göster" kartı:
=LET( bu_ay; FİLTRE(Satis; AY(Satis[Tarih])=AY(BUGÜN())); urunler; BENZERSİZ(İNDİS(bu_ay;;2)); tutarlar; ÇOKETOPLA(Satis[Tutar]; Satis[Urun]; urunler); top5; SIRALAÖLÇÜT(urunler; tutarlar; -1); İNDİS(top5; SIRALI(5)) )
LET burada üç şeyi birden çözüyor. Alt ifadeleri (bu_ay, urunler, tutarlar) tek seferde hesaplıyor — aynı FİLTRE'yi formül içinde dört kez tekrar etmiyorsun. Formül okunaklı kalıyor; üç ay sonra geri döndüğünde "burada ne yapmıştım" sorusuna cevap veriyor. Excel'in hesaplama motoru ifadeyi bir kez çalıştırıyor, dosya performansı korunuyor.
Geçen aya göre değişim kartı şöyle: =LET( bu; ÇOKETOPLA(Satis[Tutar]; Satis[Ay]; AY(BUGÜN())); onceki; ÇOKETOPLA(Satis[Tutar]; Satis[Ay]; AY(BUGÜN())-1); (bu-onceki)/onceki ). Sonucu yüzde formatına çevir, koşullu biçimlendirme ile +%5'in üzerini yeşil, -%5'in altını kırmızı boya. Kartın sayısal ve görsel katmanı tek formül + bir biçimlendirme kuralıyla tamam.
5. Spill Range ve # Operatörünün Pratik Faydası Nerede?

Yayılma aralığını tek başvuruyla temsil etmek dinamik dizi mimarisinin asıl güzelliği. Bir BENZERSİZ formülü H2'de açılıp H2:H47'ye kadar yayıldıysa, H2# yazdığında tam o aralığı alırsın. Yeni veri eklendiğinde H2:H52'ye genişlerse H2# başvurusu kendiliğinden büyür.
Bu davranışın pratik faydası üç noktada öne çıkar. Grafiklerde: Pivot grafiğin alternatifi olarak normal grafiğin veri aralığına H2# yazdığında, yeni kategori eklendiğinde grafik kendi ekseninde genişler. Veri doğrulama listesinde: Açılır liste kaynağına =Sayfa1!H2# yazdığında dropdown otomatik genişler — yeni şube açıldığında listeye elle eklemen gerekmez. İç içe formüllerde: KPI sayfasında BENZERSİZ üretip yanına ÇOKETOPLA yapıştırdığında, ölçüt aralığını H2# verirsin; bölge listesi büyüdükçe toplam satırları da büyür.
Klasik yöntemle karşılaştırma şu tabloda yoğunlaşıyor:
| Senaryo | Klasik yöntem | Dinamik dizi + spill |
|---|---|---|
| Yeni kategori eklendi | Pivot yenile, formülü kopyala, grafiği genişlet | Hiçbir şey — yayılır |
| Açılır listeye yeni şube | Doğrulama aralığını elle güncelle | Liste otomatik genişler |
| KPI kartı formülü değişti | 10 kart için 10 hücre düzenle | Tek LET formülünü güncelle |
| Aralık dışı veri unutuldu | $F$2:$F$500 yazmıştın, F501 hesaba girmedi | Tablo[Sütun] kullanır, sınırsız büyür |
Yapılandırılmış başvuru (örn. Satis[Tutar]) dinamik dizilerin kardeş yapısı. Tablo nesnesi (CTRL+T) içinde tutulan veri, dinamik dizi formülünün gördüğü her hücreyi otomatik tarar. Birlikte kullanıldıklarında "KPI panelimi 6 ayda bir yeniden kurmak zorunda kalıyorum" şikayetinin çözümü kendiliğinden gelir.
6. Finans ve İK Tarafında Dinamik Dizi: Nakit, Bütçe, Bordro KPI'ları
Üretim ve satış dışında dinamik dizilerin değdiği iki alan finans ve insan kaynakları. Türkiye'deki bağımsız mali müşavir bürolarının ve KOBİ finans departmanlarının aylık raporlama yoğunluğu, dinamik dizilerin sağladığı zaman tasarrufuna en açık alanlardan biri.
Nakit akış KPI sayfası tipik olarak şu kartları taşır: ay sonu tahmini bakiye, son 30 gündeki giriş-çıkış, müşteri bazlı alacak yaşlandırması, vade geçmiş borçlar. =FİLTRE(Cari[Bakiye]; (Cari[Vade]<BUGÜN())*(Cari[Tip]="Alacak")) formülü vade geçmiş alacakları tek hücrede yayar; toplamı =TOPLA(O2#) ile alırsın. Yaşlandırma analizi için: =SIRALAÖLÇÜT(FİLTRE(Cari; Cari[Tip]="Alacak"); FİLTRE(Cari[Vade]; Cari[Tip]="Alacak"); 1) — vadeye göre artan sıralı liste çıkar.
Bütçe gerçekleşme KPI'sı için ay-kategori matris tablosu kuruluyor. =BENZERSİZ(Butce[Kategori]) bir sütunda, üst satırda =SIRALI(1; 12) ile 12 ay yayılır; ortadaki matris hücresine =ÇOKETOPLA(Gerc[Tutar]; Gerc[Kategori]; T2#; Gerc[Ay]; U1#) yazdığında çapraz matris kendiliğinden dolar. Yeni kategori veya yeni gerçekleşme satırı eklendiğinde matris büyür.
İK tarafında bordro icmali ve performans takibi dinamik dizilerle kuruluyor. Departman bazlı ortalama prim, kıdem yılına göre devamsızlık oranı, performans skoru üst yüzde 10'a giren çalışanların listesi — hepsi tek sayfada. =FİLTRE(Personel[Ad]; Personel[Performans]>PERSENTİL(Personel[Performans]; 0,9)) formülü performans skoru üst %10'a giren çalışan adlarını yayar. Listenin uzunluğu değişebilir; formülün kendisi sabit kalır. SGK ve gelir vergisi tarifelerine bağlı bordro KPI'larında ise =EĞERÇOK(...) dilim tablosu ile birleşince hesap motoru tam çalışır hale gelir.
7. Performans, Bakım ve Yaygın Hatalar Nelere Dikkat Etmeli?
Dinamik dizi yapısı bedava değil; yanlış kurgulanırsa dosya yavaşlar veya formül beklenmedik yerlerde patlar. Tecrübeyle öğrenilen birkaç pratik kural performans ve sürdürülebilirliği güvende tutar.
- Tam sütun başvurusu yasak:
FİLTRE(A:A; ...)milyon satır tarar, dosya kilitlenebilir. Tablo nesnesi veya tanımlı isim kullan; aralık sadece gerçek veriyi içersin. - Oynak fonksiyonlardan kaçın: BUGÜN, ŞİMDİ, DOLAYLI, KAYDIR her hesaplamada yeniden tetiklenir. KPI bandında BUGÜN sıklıkla geçer; sayısı arttıkça dosya ağırlaşır. Mümkün yerde sabit tarih hücresi referansla.
- Birden fazla LET bağlı formülü ayır: Aynı LET'i 10 hücrede tekrar etmektense bir hücrede sonucu üret, diğerlerinden
#ile başvur. Hesaplama bir kez çalışır. - Yayılma engellerini izle: Formülün altındaki hücrede manuel girilmiş bir not varsa
#YAYIL!verir. KPI sayfasında "boş bırakılması gereken alanı" görsel olarak işaretle (açık gri arka plan). - Eski sürüm açacaklara dikkat: Bir paydaş dosyayı dinamik dizi desteklemeyen bir sürümde açtığında formüller
_xlfn.önekiyle hata verir. Paylaşım öncesi hedef sürümü sor; gerekirse sonuçları değer olarak yapıştır. - Power Query ile birleşim: Çok büyük ham veri (yüz binlerce satır) için dinamik dizi yerine Power Query + Veri Modeli daha hızlı. KPI ekranı dinamik dizi, arkadaki veri hazırlığı Power Query iyi bir bölünme.
Yaygın hatalar genelde tek bir yere konsantre. Dolar işareti yerine yapılandırılmış başvuru kullanmamak, yayılan aralığın altını "boş bırakacak alan" olarak işaretlememek, LET'in içine LET nestlemek (okunabilirlik bozulur), aynı kaynak veriyi farklı sayfalarda iki ayrı Tablo'ya bölmek. Bu dördünden kaçınmak çoğu KPI dosyasını sağlıklı bir bakım hattında tutar.
Modern Excel'deki dinamik dizi motoru tek bir özellik değil, raporlama disiplinin yeniden düşünüldüğü bir geçiş. Tek formülün hücreden hücreye yayıldığını ve panelin canlı kaldığını ilk gördüğünde, "bu sayfayı her ay baştan kuruyordum" alışkanlığı hızla geride kalır.
Sıkça Sorulan Sorular
Dinamik dizi formülleri hangi Excel sürümlerinde çalışır?
Microsoft 365 abonelik sürümleri ve Excel 2021/2024 masaüstü sürümlerinde FİLTRE, SIRALA, BENZERSİZ, SIRALI gibi fonksiyonlar yerleşik olarak gelir. Daha eski masaüstü sürümlerde bu fonksiyonlar yoktur; klasik CTRL+SHIFT+ENTER dizi formüllerine dönmek gerekir. Paylaştığın paydaşların hangi sürümü kullandığını sormak dosya açılmazlığı sorununu baştan engeller.
#YAYIL! hatası ne anlama gelir ve nasıl çözülür?
Dinamik dizi formülünün yayılması gereken hücrelerden biri başka değer içeriyorsa Excel #YAYIL! döndürür. Formül çubuğunda "engelleyen hücre" uyarısı çıkar; uyarıya tıklayınca engel hücreye gidersin. Değeri sildiğinde formül kendiliğinden açılır. KPI sayfasında yayılma alanının altını boş bırakacak şekilde planlamak en pratik koruma.
Spill range ve # operatörü arasındaki ilişki nedir?
Spill range, dinamik dizi formülünün yayıldığı hücre aralığıdır. # operatörü (hash) bu yayılan aralığa tek başvuruyla erişmeyi sağlar. H2 hücresinde BENZERSİZ formülü H2:H40'a yayıldıysa H2# yazdığında tüm aralığı temsil eder. Aralık büyüdüğünde başvuru kendiliğinden büyür; grafiklerde, veri doğrulama listelerinde ve iç içe formüllerde dinamik kalmayı bu operatör sağlar.
LET fonksiyonu KPI hesaplamalarında neden tercih edilir?
LET formül içinde değişken tanımlamayı mümkün kılar. Aynı alt ifadenin (örneğin bir FİLTRE sonucunun) defalarca yazılmasını engeller, formülü okunaklı yapar ve Excel motorunun aynı hesabı bir kez yapmasını sağlar. KPI bantlarında dört-beş katmanlı iç içe formüller hızla karmaşıklaşır; LET ile değişken adlandırılınca bakım yaparken neyin nereye bağlandığı net görünür.
Dinamik dizi mi pivot tablo mu tercih edilmeli?
İkisi farklı amaçlara hizmet eder. Pivot tablo büyük veriyi hızlı özetler, çift tıkla detayına iner, dilimleyici eklenir. Dinamik dizi canlı KPI bandı ve formüle dayalı özelleşmiş hesap için ideal — yeni satır eklendiğinde otomatik güncellenir, pivottaki "yenile" adımına gerek kalmaz. Çoğu KPI sayfasında ikisi birlikte kullanılır: arkada pivot, önde dinamik dizi formülleriyle özelleştirilmiş kartlar.
Yapılandırılmış başvuru (Tablo[Sütun]) ile sabit aralık arasındaki fark nedir?
Sabit aralık (F2:F500) iki risk taşır: aralık dışına çıkan veri hesaba girmez, gereksiz boş hücreler dosyayı yavaşlatır. Yapılandırılmış başvuru Tablo'nun mevcut satır sayısına otomatik uyar — yeni satır eklendiğinde aralığı genişletmek için formüle dönmek gerekmez. Dinamik dizi fonksiyonlarıyla birleştiğinde KPI panelinin kendini güncellemesi yapılandırılmış başvuruyla mümkün olur.
Yeni şube veya kategori eklendiğinde KPI sayfasında ne yapmak gerekir?
Yapı doğru kurulduysa hiçbir şey yapmaman gerekir. BENZERSİZ ile çekilen kategori/şube listesi yeni satır eklendiğinde yayılma alanı genişler; yanındaki ÇOKETOPLA formülü # operatörü ile bağlandığı için o da büyür. Veri doğrulama açılır listesi de spill range'i kaynak alıyorsa otomatik genişler. Bu mimari, manuel güncelleme adımını sıfıra indirir.
Dosya performansı düştüğünde nereye bakmalıyım?
Üç noktayı kontrol et. Tam sütun başvurusu (A:A) varsa Tablo başvurusuyla değiştir. Oynak fonksiyonların (BUGÜN, ŞİMDİ, DOLAYLI, KAYDIR) sayısını azalt; mümkün yerde sabit tarih hücresine bağla. Aynı LET ifadesinin tekrarladığı hücreleri tek formüle çıkar, diğerlerinden # ile başvur. Çok büyük ham veri için Power Query + Veri Modeli ile birleşim genelde dinamik diziden hızlıdır.


