Excel Formül Hataları ve Çözümleri — Tüm #HATA Kodlarının Kapsamlı Rehberi

Giriş: Excel Hataları Neden Önemli?

Excel'de bir formül yazdığınızda hücrede beklediğiniz sonuç yerine #YOK, #DEĞER! veya #BAŞV! gibi tuhaf bir kod gördüyseniz yalnız değilsiniz. Excel'de günlük çalışan milyonlarca kullanıcı, basit bir formül hatasının saatlerce sürebilen iş kayıplarına yol açtığını bilir. Bir bordro hesabında #BÖL/0! hatası ücret ödemesini durdurabilir; bir finansal raporda #YOK değeri toplam satırı bozabilir; bir veri konsolidasyonunda #BAŞV! hatası raporun bütününü çürüğe çıkarabilir.

Bu kapsamlı rehberde Excel'in tüm formül hata kodlarını — klasik #YOK, #DEĞER!, #BAŞV!, #BÖL/0!, #SAYI!, #AD?, #BOŞ! hataları ve Microsoft 365 ile gelen modern #YAY!, #HESAP! hatalarını — sebep, örnek ve çözüm üçlüsüyle ele alacağız. Yalnızca hatayı tanımakla kalmayacak; EĞERHATA (IFERROR), EĞERYOKSA (IFNA), EHATALIYSA (ISERROR), EYOKSA (ISNA), BİLGİ.HATA (ERROR.TYPE) gibi hata yakalama fonksiyonlarıyla profesyonel modeller kuracaksınız. Ayrıca büyük modellerde toplu hata tespiti, koşullu biçimlendirme ile görsel uyarı ve VBA ile programatik hata yönetimi gibi ileri konulara değineceğiz.

Rehberi okuduğunuzda yalnızca hata kodlarını çözmekle kalmayacaksınız; baştan hata vermeyen formüller nasıl yazılır onu öğreneceksiniz. Veri Doğrulama, adlandırılmış aralıklar, yapısal referanslar ve KIRP/TEMİZ ile ön temizlik gibi tekniklerle Excel modellerinizi profesyonel hâle getireceğiz. İster bir bordro uzmanı, ister mali müşavir, ister veri analisti, ister öğrenci olun — bu rehberdeki her örnek gerçek hayattan, bire bir kopyalanabilir formüllerle hazırlandı.

Not: Excel'in Türkçe sürümünde hata adları Türkçeleştirilmiştir (#YOK, #DEĞER!). İngilizce sürümde aynı hata #N/A, #VALUE! olarak görünür. Bu rehberde her iki adlandırma da paralel verilmiştir; çok dilli ekiplerde rahat çalışırsınız.

Excel Hata Türleri — Genel Bakış

Excel'de karşılaşacağınız hatalar dokuz ana kod altında toplanır. Aşağıdaki tablo hangi hatanın hangi durumda ortaya çıktığını ve hangi fonksiyonlarda en sık görüldüğünü özetler.

Hata KoduİngilizceAnlamıSık Görüldüğü Fonksiyonlar
#YOK#N/AAranan değer bulunamadıDÜŞEYARA, YATAYARA, KAÇINCI, ÇAPRAZARA, İNDİS+KAÇINCI
#DEĞER!#VALUE!Yanlış veri tipi (metin yerine sayı bekleniyordu)TOPLA, ÇARPIM, MATEMATİK işlemleri, METİN fonksiyonları
#BAŞV!#REF!Geçersiz hücre başvurusu (silinmiş satır/sütun)DÜŞEYARA, DOLAYLI, OFFSET, çapraz sayfa formülleri
#BÖL/0!#DIV/0!Sıfıra bölme veya boş hücreye bölmeORTALAMA, oran/yüzde hesapları, finansal modeller
#SAYI!#NUM!Geçersiz sayısal değer (negatif kök, sınır aşımı)KAREKÖK, LN, FAİZ_NO, İÇ_VERİM_ORANI (IRR)
#AD?#NAME?Tanımsız fonksiyon, ad veya yazım hatasıTüm fonksiyonlar — özellikle yeni M365 fonksiyonları
#BOŞ!#NULL!İki aralık kesişmiyor (boşluk operatörü hatası)TOPLA, ORTALAMA — yanlış ayraç kullanımı
#YAY!#SPILL!Dinamik dizi taşma alanı engellenmişFİLTRE, BENZERSİZ, SIRALA, SIRALI, DİZİ formülleri
#HESAP!#CALC!Dinamik dizi hesaplanamadıFİLTRE (boş sonuç), iç içe LAMBDA, recursion
##########Sütun genişliği yetersiz veya negatif tarihSayı/tarih biçiminde dar sütun
#DÖN!#CIRCULAR!Döngüsel başvuru (formül kendine atıfta bulunur)Toplam satırına o toplamı dâhil eden formüller

Aşağıda her hata türünü sebep, örnekler ve çözümler başlıkları altında derinlemesine ele alacağız.

1. #YOK Hatası (#N/A) — Aranan Değer Bulunamadı

#YOK hatası, bir arama fonksiyonunun (DÜŞEYARA / VLOOKUP, KAÇINCI / MATCH, ÇAPRAZARA / XLOOKUP, İNDİS+KAÇINCI / INDEX+MATCH) verdiğiniz değeri tabloda bulamadığında döner. Excel size kibarca "böyle bir kayıt yok" demektedir. En sık karşılaşılan ve en kolay çözülen hata bu olduğu için öncelikle ele alıyoruz.

#YOK Sebepleri ve Örnekleri

  • Değer gerçekten yok: Aradığınız ürün kodu, müşteri numarası veya çalışan ID listede bulunmuyor.
  • Fazladan boşluk var: Hücredeki "ABC123 " ile aradığınız "ABC123" Excel için farklıdır.
  • Veri tipi uyuşmuyor: Bir tarafta sayı, öteki tarafta metin biçiminde sayı (1001 vs "1001").
  • DÜŞEYARA aralığı yanlış: Aralığın ilk sütunu, arama değerinin sütunu değil.

Tipik örnek formül ve hatanın oluşum biçimi:

=DÜŞEYARA("ABC999"; A2:C100; 2; YANLIŞ)
=VLOOKUP("ABC999", A2:C100, 2, FALSE)

"ABC999" listede yoksa Excel #YOK döner. Aynı şekilde:

=KAÇINCI(150; B2:B50; 0)        // 150 yoksa #YOK
=ÇAPRAZARA(F2; A2:A100; B2:B100) // bulunamazsa #YOK

#YOK Çözümleri

Çözüm 1 — EĞERHATA (IFERROR) ile yakalama: En yaygın ve okunaklı yöntem. Hata yerine boş, "Bulunamadı" veya 0 dönebilirsiniz.

=EĞERHATA(DÜŞEYARA(F2; A:C; 2; YANLIŞ); "Bulunamadı")
=IFERROR(VLOOKUP(F2, A:C, 2, FALSE), "Not Found")

Çözüm 2 — EĞERYOKSA (IFNA) ile sadece #YOK yakalama: EĞERHATA tüm hataları yakalar; bazen #DEĞER! veya #BAŞV! oluşunca farkına varmak istersiniz. EĞERYOKSA yalnızca #YOK hatasını yakalar, diğerlerini geçirir.

=EĞERYOKSA(DÜŞEYARA(F2; A:C; 2; YANLIŞ); "Müşteri yok")
=IFNA(VLOOKUP(F2, A:C, 2, FALSE), "Customer not found")

Çözüm 3 — KIRP (TRIM) ile boşluk temizliği: Veri kopyala-yapıştırla geliyorsa fazladan boşluk olabilir. Hem aranan değeri hem tabloyu temizleyin:

=DÜŞEYARA(KIRP(F2); A:C; 2; YANLIŞ)
=VLOOKUP(TRIM(F2), A:C, 2, FALSE)

Çözüm 4 — Veri tipi dönüşümü: Kod sütununuzda metin biçiminde sayılar varsa SAYIYAÇEVİR (VALUE) veya METNEÇEVİR (TEXT) ile zorlayın:

=DÜŞEYARA(METNEÇEVİR(F2;"0"); A:C; 2; YANLIŞ)
=VLOOKUP(TEXT(F2,"0"), A:C, 2, FALSE)
İpucu: ÇAPRAZARA (XLOOKUP) fonksiyonunun kendi içinde not_found parametresi vardır; ekstra EĞERHATA gerekmez:
=ÇAPRAZARA(F2; A:A; B:B; "Bulunamadı")
=XLOOKUP(F2, A:A, B:B, "Not found")
Bu yaklaşım daha temiz, daha hızlı ve daha okunaklıdır. Microsoft 365 ve Excel 2021+ kullanıcıları için ilk tercih olmalıdır.

2. #DEĞER! Hatası (#VALUE!) — Yanlış Veri Tipi

#DEĞER! hatası, formülün beklediği veri tipinden farklı bir değerle karşılaştığında oluşur. Excel size "burada sayı bekliyordum, metin geldi" demektedir. Bu hata, özellikle başkasından gelen Excel dosyalarında veya web'den kopyalanan tablolarda sıkça görülür.

#DEĞER! Sebepleri ve Örnekleri

  • Metin biçiminde sayı: =A1+B1 formülünde A1 hücresi "100" (metin) ise hata oluşur.
  • Yanlış parametre tipi: =KAREKÖK("merhaba") sayı yerine metin alır.
  • Tarih biçimi bozuk: =A1-B1 formülünde A1 metin biçiminde bir tarihse hata döner.
  • Dizi formülünde uyumsuz boyut: =A1:A10*B1:B5 — boyutlar uyumsuz.

Gerçek hayattan örnekler:

=A1+B1                  // A1="100" metin, B1=50 sayı → #DEĞER!
=TOPLA(A1:A10)+B1       // A1:A10 sayısal, B1="-" metni varsa → #DEĞER!
=YIL(A1)                // A1 metin biçimli tarih → #DEĞER!
=A1*A2                  // herhangi biri metin → #DEĞER!

#DEĞER! Çözümleri

Çözüm 1 — SAYIYAÇEVİR (VALUE) ile metni sayıya dönüştür:

=SAYIYAÇEVİR(A1) + SAYIYAÇEVİR(B1)
=VALUE(A1) + VALUE(B1)

Çözüm 2 — TOPLA gibi fonksiyonlar metin değerleri görmezden gelir:

=TOPLA(A1:A10)          // metin hücreleri atlar, hata vermez
=SUM(A1:A10)            // safe — text cells skipped

Yani basit toplam yerine + operatörü yerine TOPLA fonksiyonu kullanmak çoğu zaman #DEĞER! hatasından korur.

Çözüm 3 — EĞERHATA ile yakalama:

=EĞERHATA(A1*B1; 0)
=IFERROR(A1*B1, 0)

Çözüm 4 — Veri Doğrulama (Data Validation): Baştan hücreye yalnızca sayı girilmesini zorunlu kılın. Veri → Veri Doğrulama → İzin Verilen: Tam Sayı / Ondalık.

İpucu: Hücredeki sayının metin mi yoksa gerçek sayı mı olduğunu hızlıca anlamanın yolu hücrede sağa hizalanıp hizalanmadığına bakmaktır. Sayılar varsayılan olarak sağa, metinler sola hizalanır. Veya =ESAYIYSA(A1) formülü ile DOĞRU/YANLIŞ olarak öğrenebilirsiniz.

3. #BAŞV! Hatası (#REF!) — Geçersiz Hücre Başvurusu

#BAŞV! hatası, formülün başvurduğu hücrenin artık var olmaması durumunda oluşur. Bir sütunu, satırı veya sayfayı sildiğinizde formüllerin hâlâ oraya bakıyor olması bu hatayı doğurur. Modellerinizde en yıkıcı hata türüdür çünkü kayıp değeri geri getirmek zordur.

#BAŞV! Sebepleri ve Örnekleri

  • Sütun veya satır silindi: =A1+B1 yazılı hücrede A sütunu silinirse =#BAŞV!+B1 kalır.
  • Sayfa silindi: Başka sayfaya bağlı formül, kaynak sayfa silinince koparıldı.
  • DÜŞEYARA sütun indeksi aralık dışında: =DÜŞEYARA(F2; A:C; 4; YANLIŞ) — aralık 3 sütun ama 4'ü istedi.
  • Kes-yapıştır ile referans bozuldu: Kaynaktaki hücre kesip başka yere yapıştırılınca formül takip edemedi.

Tipik örnek:

=DÜŞEYARA(F2; A2:C100; 5; YANLIŞ)   // sadece 3 sütun var, 5 istedi → #BAŞV!
=DOLAYLI("'"&A1&"'!B5")              // A1'deki sayfa adı yoksa → #BAŞV!
=Sayfa2!B5                            // Sayfa2 silinirse → #BAŞV!

#BAŞV! Çözümleri

Çözüm 1 — Hemen Geri Al (Ctrl+Z): Sütun/satır silme kazaen olduysa Ctrl+Z her zaman ilk reflekstir. Excel sildiğiniz veriyi geri getirir, formüller eski haline döner.

Çözüm 2 — Yapısal Referans / Tablo (Ctrl+T): Verinizi Tablo'ya dönüştürüp Tablo1[Tutar] gibi yapısal referans kullanın. Tablo sütunu silinmediği sürece formül bozulmaz, yeni satır/sütun eklemek de otomatik genişler.

=TOPLA(SiparisTablosu[Tutar])
=SUM(OrderTable[Amount])

Çözüm 3 — DOLAYLI (INDIRECT) + Kontrol: Dinamik sayfa adı kullanıyorsanız sayfanın varlığını kontrol edin:

=EĞERHATA(DOLAYLI("'"&A1&"'!B5"); "Sayfa yok")
=IFERROR(INDIRECT("'"&A1&"'!B5"), "Sheet missing")

Çözüm 4 — Önleme: Adlandırılmış Aralık: Formüller → Ad Tanımla ile sütunlara isim verirseniz silme/ekleme operasyonlarında referans daha güvenli kalır.

4. #BÖL/0! Hatası (#DIV/0!) — Sıfıra Bölme

#BÖL/0! hatası, bir sayının sıfıra veya boş hücreye bölünmesi durumunda oluşur. Matematiksel olarak sıfıra bölme tanımsızdır; Excel de aynı kuralı uygular. Ortalama, oran ve büyüme hesaplarında en sık karşılaşılan hatadır.

#BÖL/0! Sebepleri ve Örnekleri

  • Bölen sıfır: =A1/B1 formülünde B1=0 → #BÖL/0!.
  • Bölen boş hücre: Excel boş hücreyi 0 sayar.
  • ORTALAMA (AVERAGE) boş aralık: Aralıkta hiç sayı yoksa hata döner.
  • Yüzde değişim, ilk dönem 0: =(B1-A1)/A1 formülünde A1=0 → #BÖL/0!.

Gerçek finansal örnek — yüzde değişim:

// Ocak satışı=0, Şubat satışı=5000 olsun
=(B1-A1)/A1               // = 5000/0 → #BÖL/0!

// Ortalama (boş aralık)
=ORTALAMA(B2:B10)          // B2:B10 hep boşsa → #BÖL/0!

// Birim maliyet
=ToplamMaliyet/Adet        // Adet=0 ise → #BÖL/0!

#BÖL/0! Çözümleri

Çözüm 1 — EĞERHATA (IFERROR):

=EĞERHATA(A1/B1; 0)
=IFERROR(A1/B1, 0)

Çözüm 2 — EĞER (IF) ile bölen kontrolü: Daha açık ve okunaklı yaklaşım. Bölen sıfırsa farklı sonuç döndürür.

=EĞER(B1=0; ""; A1/B1)
=IF(B1=0, "", A1/B1)

// Yüzde değişim için anlamlı sonuç:
=EĞER(A1=0; "—"; (B1-A1)/A1)

Çözüm 3 — EĞERHATA + sayısal varsayılan: Yüzde hücresinde 0 göstermek istiyorsanız:

=EĞERHATA((B1-A1)/A1; 0)
=IFERROR((B1-A1)/A1, 0)

Çözüm 4 — ORTALAMA için EĞERSAY (COUNTIF) kontrolü:

=EĞER(EĞERSAY(B2:B10; "<>")=0; 0; ORTALAMA(B2:B10))
=IF(COUNTIF(B2:B10, "<>")=0, 0, AVERAGE(B2:B10))
İpucu: Finansal modellerde "0 yerine boş bırakma" tercih edin. Görsel olarak rapor temiz görünür, ortalama/toplam hesapları doğru çalışır: =EĞER(A1=0; ""; B1/A1) formülünde sonuç boş string döner, üst toplama girmez.

5. #SAYI! Hatası (#NUM!) — Geçersiz Sayısal Değer

#SAYI! hatası, matematiksel olarak imkânsız veya Excel'in sayısal sınırlarını aşan bir hesaplama denendiğinde oluşur. Negatif sayının karekökü, çok büyük üs alma, finansal fonksiyonların yakınsayamaması gibi durumlarda görülür.

#SAYI! Sebepleri ve Örnekleri

  • Negatif sayının kareköğü/logaritması: =KAREKÖK(-5)#SAYI!.
  • Sayısal sınır aşıldı: Excel maksimum sayı 1.79E+308; =10^310#SAYI!.
  • İterasyon yakınsayamadı: İÇ_VERİM_ORANI (IRR), FAİZ_NO (RATE) gibi fonksiyonlar 20 iterasyonda çözüm bulamazsa.
  • Tutarsız işaret kuralı: Finansal fonksiyonlarda tüm nakit akışları aynı yönde olursa.

Örnekler:

=KAREKÖK(-25)                          // → #SAYI!
=LN(0)                                  // → #SAYI! (sıfırın logaritması -∞)
=İÇ_VERİM_ORANI({1000;2000;3000})      // hepsi pozitif → #SAYI!
=FAİZ_NO(360; 0; 100000)                // gerçekçi olmayan parametreler → #SAYI!

#SAYI! Çözümleri

Çözüm 1 — Mutlak değer ile düzelt: Negatif kontrolü gerekiyorsa MUTLAK (ABS) kullanın:

=KAREKÖK(MUTLAK(A1))
=SQRT(ABS(A1))

Çözüm 2 — EĞERHATA ile yakalama:

=EĞERHATA(KAREKÖK(A1); "Negatif sayı")
=IFERROR(SQRT(A1), "Negative input")

Çözüm 3 — Finansal fonksiyona tahmin parametresi ver: İÇ_VERİM_ORANI, FAİZ_NO gibi fonksiyonların son parametresi tahmin'dir. Yakınsamazsa farklı bir başlangıç verin:

=İÇ_VERİM_ORANI(A1:A10; 0,1)     // tahmin %10
=İÇ_VERİM_ORANI(A1:A10; -0,5)    // tahmin -%50

6. #AD? Hatası (#NAME?) — Tanımsız Fonksiyon veya Ad

#AD? hatası, Excel'in formülde bilmediği bir kelime gördüğünde oluşur. Çoğunlukla yazım hatasından, eski Excel sürümlerinde olmayan yeni fonksiyonlardan veya silinmiş ad tanımlarından kaynaklanır.

#AD? Sebepleri ve Örnekleri

  • Fonksiyon adı yanlış yazıldı: =DUSEYARA(...) (Ş yerine S) → #AD?.
  • M365 fonksiyonu eski sürümde: =ÇAPRAZARA(...) Excel 2019'da yok → #AD?.
  • Adlandırılmış aralık silindi: =TOPLA(SatisListesi) ama SatisListesi tanımı yok.
  • Metin tırnağı eksik: =BİRLEŞTİR(merhaba; A1) — "merhaba" tırnaksız → #AD?.
  • Makro fonksiyonu kapalı: Eklenti devre dışı bırakıldı.

Yaygın örnekler:

=DUSEYARA(F2; A:C; 2; YANLIS)    // doğrusu DÜŞEYARA + YANLIŞ → #AD?
=Vlookup(F2, A:C, 2, FALSE)        // İngilizce sürümde değilseniz → #AD?
=BİRLEŞTİR(merhaba; A1)            // metin tırnaksız → #AD?
=TOPLA(EskiAd)                     // EskiAd silinmiş → #AD?

#AD? Çözümleri

Çözüm 1 — Otomatik tamamlama kullan: Fonksiyon adını yazarken Excel açılır liste ile tamamlama önerir; Tab tuşuna basarak doğru ismi yerleştirin. Bu, en sık yapılan yazım hatalarını sıfırlar.

Çözüm 2 — Excel sürüm uyumluluğu: ÇAPRAZARA, FİLTRE, BENZERSİZ gibi fonksiyonlar yalnızca Microsoft 365 ve Excel 2021'de var. Dosyanız eski sürümlerde de açılacaksa eşdeğer formül kullanın:

// M365 ÇAPRAZARA yerine eski sürüm uyumlu:
=İNDİS(B:B; KAÇINCI(F2; A:A; 0))
=INDEX(B:B, MATCH(F2, A:A, 0))

Çözüm 3 — Adlandırılmış aralıkları kontrol et: Formüller → Ad Yöneticisi (Ctrl+F3) menüsünden mevcut adları görün; silinmişse yeniden tanımlayın.

Çözüm 4 — Tırnak ekle: Metin parametreleri her zaman çift tırnak içinde olmalıdır:

=BİRLEŞTİR("Merhaba "; A1)
=CONCAT("Hello ", A1)

7. #BOŞ! Hatası (#NULL!) — Yanlış Aralık Operatörü

#BOŞ! hatası, iki aralık arasında boşluk kullanıldığında oluşur ve aralıklar kesişmiyorsa Excel hata döndürür. Türkçe Excel'de ayraç olarak noktalı virgül (;) kullanırken yanlışlıkla boşluk konursa hatayı tetikler.

#BOŞ! Sebepleri ve Örnekleri

  • Yanlış ayraç (boşluk): =TOPLA(A1:A10 B1:B10) — boşluk Excel'de "kesişim" operatörüdür; A ve B sütunları kesişmediği için #BOŞ!.
  • İki noktayı boşluğa karıştırma: =TOPLA(A1 A10) yazılırsa A1 ile A10 arasındaki kesişim aranır.
  • Adlandırılmış aralıklar kesişmiyor: =Satışlar Maliyetler — eğer iki ad çakışmıyorsa.

Örnekler:

=TOPLA(A1:A10 B1:B10)         // boşluk → kesişim → #BOŞ!
=TOPLA(A1:A10; B1:B10)        // doğrusu noktalı virgül
=A1:A5 C1:C5                    // sütunlar kesişmiyor → #BOŞ!

#BOŞ! Çözümleri

Çözüm 1 — Doğru ayracı kullan: Türkçe Excel'de noktalı virgül (;), İngilizce Excel'de virgül (,) kullanılır. Bölge ve Dil ayarınızı bilin.

// Türkçe Excel:
=TOPLA(A1:A10; B1:B10; C1:C10)

// İngilizce Excel:
=SUM(A1:A10, B1:B10, C1:C10)

Çözüm 2 — Kesişim istiyorsan emin ol: Boşluk operatörü gerçekten kesişim yaratmak için kullanılabilir; sadece kesişen aralıkları kullanın:

=TOPLA(A1:C10 B5:B15)   // B5:B10 kesişimi (geçerli)

Çözüm 3 — EĞERHATA ile yakalama:

=EĞERHATA(TOPLA(A1:A10 B1:B10); 0)

8. #YAY! Hatası (#SPILL!) — Dinamik Dizi Taşma Sorunu

#YAY! hatası Microsoft 365 ile gelen dinamik dizilere özgüdür. FİLTRE (FILTER), BENZERSİZ (UNIQUE), SIRALA (SORT), SIRALI (SEQUENCE), RASGELEDIZI (RANDARRAY) gibi fonksiyonlar birden fazla hücreye sonuç döker (taşar/spill). Eğer taşma alanı bir başka değerle dolu ise Excel #YAY! hatası verir.

#YAY! Sebepleri ve Örnekleri

  • Taşma alanı dolu: =FİLTRE(A:A; B:B>1000) formülü 5 satır döker, ama 3. satırda elle yazılmış değer var → #YAY!.
  • Birleştirilmiş hücreler: Taşma alanı içinde birleştirilmiş hücre varsa hata döner.
  • Tablo içinde dinamik dizi: Excel Tablo'ları (Ctrl+T) dinamik dizi taşmasını desteklemez.
  • Bilinmeyen sonuç boyutu: Bazı durumlarda Excel taşma boyutunu belirleyemez (DOLAYLI ile).

Yaygın örnek:

=FİLTRE(A2:A100; B2:B100>5000)     // taşma alanında dolu hücre → #YAY!
=BENZERSİZ(A2:A1000)                // alt hücrelerden biri dolu → #YAY!
=SIRALI(10; 1; 1; 1)                // 10 satır taşacak; 5. satır dolu → #YAY!
=ÇAPRAZARA(F2; A:A; B:D)            // 3 sütuna taşar; G2 dolu → #YAY!

#YAY! Çözümleri

Çözüm 1 — Taşma alanını boşalt: En basit çözüm. Hatalı hücreyi seçip mavi kesikli çizginin gösterdiği taşma alanındaki dolu hücreleri silin. Çoğu zaman tek hamle yeterlidir.

Çözüm 2 — Birleştirilmiş hücreleri çöz: Giriş → Birleştir ve Ortala → Hücreleri Ayır.

Çözüm 3 — Tablo'dan çıkar: Dinamik dizi formülünü Tablo dışında, normal aralıkta kullanın. Tablo'lar henüz dinamik diziyi desteklemiyor.

Çözüm 4 — Tek hücreye sınırla: Dinamik dizi yerine tek bir sonuç istiyorsanız İNDİS ile ilk değeri alın:

=İNDİS(FİLTRE(A:A; B:B>1000); 1)
=INDEX(FILTER(A:A, B:B>1000), 1)
İpucu: Dinamik dizilerin döndürdüğü tüm aralığı başka formülde kullanmak için # operatörünü kullanın: =TOPLA(F2#) yazarsanız F2'den taşan tüm aralığı toplar. Bu çok güçlü bir özelliktir, taşma alanı büyüyüp küçülse de formül takip eder.

9. #HESAP! Hatası (#CALC!) — Dinamik Dizi Hesaplanamadı

#HESAP! hatası, Microsoft 365'in dinamik dizi motorunun bir hesabı tamamlayamadığında ortaya çıkar. #YAY!'dan farklı olarak burada Excel sonucu hesapladı ama döndürürken yapısal bir engelle karşılaştı.

#HESAP! Sebepleri ve Örnekleri

  • Boş dizi sonucu: =FİLTRE(A:A; B:B>999999) ve hiçbir kayıt eşleşmiyorsa → #HESAP!.
  • İç içe dizi (nested array): Excel henüz dizi içinde dizi döndürmeyi desteklemez.
  • LAMBDA recursion limit: Özyinelemeli LAMBDA çok derinleşirse.

Örnekler:

// Hiçbir kayıt eşleşmezse FİLTRE → #HESAP!
=FİLTRE(A:A; B:B="OlmayanDeğer")

// İç içe dizi denemesi:
=DÜŞEYARA({"a";"b"}; A:B; {1;2}; YANLIŞ)   // → #HESAP!

#HESAP! Çözümleri

Çözüm 1 — FİLTRE'ye boş_eğer parametresi: Üçüncü parametre boş sonuçta ne dönüleceğini söyler:

=FİLTRE(A:A; B:B="X"; "Eşleşme yok")
=FILTER(A:A, B:B="X", "No match")

Çözüm 2 — EĞERHATA ile yakala:

=EĞERHATA(FİLTRE(A:A; B:B>1000); "Veri bulunamadı")

10. ##### Hatası — Sütun Genişliği Yetersiz

##### aslında bir formül hatası değildir; sayı veya tarih hücreye sığmadığında Excel'in görsel uyarısıdır. Veri bozulmaz, formül hata vermez — sadece görüntü kırılır. Yine de raporda kötü görünür.

##### Sebepleri

  • Sütun çok dar, sayı veya tarih sığmıyor.
  • Negatif tarih veya saat değeri (=A1-B1 formülünde A1 < B1).

##### Çözümleri

Çözüm 1 — Sütunu otomatik genişlet: Sütun başlığının sağ kenarına çift tıklayın. Bir tek sütun için en hızlı yöntemdir.

Çözüm 2 — Tüm sayfayı tek seferde genişlet: Ctrl+A ile tüm sayfayı seçin, sonra herhangi bir sütun başlığının sağına çift tıklayın.

Çözüm 3 — Sayı biçimini düzelt: Hücre çok ondalık basamak gösteriyorsa biçimi sadeleştirin. Hücreleri Biçimlendir → Sayı → Ondalık basamak: 2.

Çözüm 4 — Negatif tarih: Tarih hesabı negatif çıkıyorsa =MUTLAK(A1-B1) ile mutlak değer alın veya 1904 tarih sistemi'ne geçin (önerilmez, dosya uyumluluğu kırılır).

11. #DÖN! / Döngüsel Başvuru

Bir formül kendi hücresine doğrudan veya dolaylı olarak başvuruyorsa Excel Döngüsel Başvuru uyarısı verir. Hücrede 0 görünür, durum çubuğunda "Döngüsel Başvurular: B5" mesajı çıkar.

Sebepleri ve Örnekleri

  • Doğrudan döngü: B5 hücresinde =A1+B5 yazıyorsa.
  • Dolaylı döngü: A1 → B1'i kullanır, B1 → C1'i kullanır, C1 → A1'i kullanır.
  • Toplam satırına o toplamı dâhil etmek: =TOPLA(B1:B10) formülü B10 hücresinde yazılırsa.

Örnek:

// B10 hücresinde:
=TOPLA(B1:B10)        // B10 kendi içinde → döngü!

// Doğrusu:
=TOPLA(B1:B9)         // B10'u dışla

Çözümleri

Çözüm 1 — Aralığı düzelt: Toplam aralığını kendi hücresini içermeyecek şekilde daralt.

Çözüm 2 — İteratif hesaplamayı aç (yalnızca özel durumlar): Bazı finansal modeller (kâr payı, faiz hesabı) bilinçli olarak döngüsel olabilir. Dosya → Seçenekler → Formüller → Yinelemeli hesaplamayı etkinleştir. Maksimum yineleme: 100, en yüksek değişim: 0,001.

Çözüm 3 — Döngüyü bul: Formüller → Hata Denetimi → Döngüsel Başvurular menüsünden döngüye katılan tüm hücreleri görün.

Hata Yakalama Fonksiyonları

Excel'in cephaneliği, hata oluştuğunda kontrolü size veren altı temel fonksiyon içerir. Her birinin yeri farklıdır; doğru zamanda doğru fonksiyonu seçmek profesyonel ile amatör modeli ayıran inceliktir.

EĞERHATA (IFERROR) — Tüm Hataları Yakalar

En sık kullanılan hata yakalama fonksiyonu. Formül herhangi bir hata döndürürse alternatif değer kullanır.

=EĞERHATA(formül; alternatif_değer)
=IFERROR(formula, value_if_error)

// Örnek:
=EĞERHATA(DÜŞEYARA(F2; A:C; 2; YANLIŞ); "Bulunamadı")
=EĞERHATA(A1/B1; 0)
=EĞERHATA(KAREKÖK(A1); "")

Avantaj: Tüm hataları yakalar — tek formülle her şeyi sarar.
Dezavantaj: Tüm hataları yakaladığı için #YOK ile #DEĞER! arasındaki farkı kaybedersiniz; gerçek bir veri tipi hatası gizlenebilir.

EĞERYOKSA (IFNA) — Sadece #YOK Yakalar

Yalnızca #YOK hatasına özel; diğer hataları (DEĞER, BAŞV, BÖL/0) geçirir.

=EĞERYOKSA(DÜŞEYARA(F2; A:C; 2; YANLIŞ); "Müşteri kaydı yok")
=IFNA(VLOOKUP(F2, A:C, 2, FALSE), "No customer record")

Ne zaman kullanılır? DÜŞEYARA, ÇAPRAZARA, KAÇINCI gibi arama fonksiyonlarında — sadece "bulunamadı" durumunu özel işlemek için. #DEĞER! veya #BAŞV! oluşursa formül hâlâ uyaracak, böylece gerçek bug'ı gizlemezsiniz.

EHATALIYSA (ISERROR) — Hata mı? DOĞRU/YANLIŞ

Hücrede hata olup olmadığını DOĞRU/YANLIŞ döner; yakalama yapmaz, sadece tespit eder.

=EHATALIYSA(A1/B1)            // B1=0 ise DOĞRU
=ISERROR(A1/B1)               // returns TRUE if any error

// Koşullu kullanım:
=EĞER(EHATALIYSA(A1/B1); 0; A1/B1)
=IF(ISERROR(A1/B1), 0, A1/B1)

Daha eski bir teknik; modern Excel'de yerine EĞERHATA kullanmak daha kısadır. Yine de Koşullu Biçimlendirme kuralında veya VBA mantığında değerlidir.

EHATAYSA (ISERR) — #YOK Hariç Tüm Hatalar

EHATALIYSA gibi DOĞRU/YANLIŞ döner ama #YOK hatasını "hata sayılmaz" kabul eder. Arama fonksiyonu sonuçlarında #YOK beklenen bir durumdur (kayıt yoksa); diğer hatalar gerçek bug'dır.

=EHATAYSA(DÜŞEYARA(F2; A:C; 2; YANLIŞ))   // #YOK ise YANLIŞ, başka hata ise DOĞRU
=ISERR(VLOOKUP(F2, A:C, 2, FALSE))

EYOKSA (ISNA) — Sadece #YOK Tespiti

EHATALIYSA'nın #YOK'a özel versiyonu. Yalnızca arama fonksiyonu sonucunun bulunup bulunmadığını test edersiniz.

=EYOKSA(DÜŞEYARA(F2; A:C; 2; YANLIŞ))
=ISNA(VLOOKUP(F2, A:C, 2, FALSE))

// Koşullu Biçimlendirme: bulunamayan satırları kırmızıya boya
// Kural formülü: =EYOKSA(DÜŞEYARA($A2; Müşteriler!A:A; 1; YANLIŞ))

BİLGİ.HATA (ERROR.TYPE) — Hata Tipini Sayıyla Döner

Hangi hata olduğunu sayısal kodla döner. Detaylı raporlama için kullanılır.

HataBİLGİ.HATA Sonucu
#BOŞ!1
#BÖL/0!2
#DEĞER!3
#BAŞV!4
#AD?5
#SAYI!6
#YOK7
#TAŞMA! / #YAY!9
#HESAP!14
Hata yok#YOK
=EĞER(BİLGİ.HATA(A1)=2; "Sıfıra bölme"; "Diğer hata")
=IF(ERROR.TYPE(A1)=2, "Division by zero", "Other")

Hata Önleme Teknikleri

Hatayı yakalamak iyidir; oluşmadan önlemek daha iyidir. Profesyonel Excel modellerinde aşağıdaki teknikler hata olasılığını sıfıra yaklaştırır.

Veri Doğrulama (Data Validation) ile Önleme

Veri → Veri Doğrulama menüsünden hücreye yalnızca belirli tipte değer girilmesini zorlayabilirsiniz. Tarih hücresine metin girilemezse #DEĞER! oluşmaz; ürün kodu hücresine yalnızca listeden seçim yapılabiliyorsa #YOK oluşmaz.

  • Tam Sayı: 0-1000 arası izin ver — dışı reddedilir.
  • Liste: Açılır liste oluştur, Müşteriler tablosundan değer seçtir.
  • Özel formül: =ESAYIYSA(A1) — yalnızca sayı kabul et.

Adlandırılmış Aralık ile Referans Güvenliği

Formüller → Ad Tanımla ile sütunlara isim verirseniz formüller hücre adresi yerine ada bağlanır. =TOPLA(SatisListesi) yazılır, =TOPLA(B2:B500) yazılmaz. Listenin yeri değişse veya satır eklense de formül kırılmaz.

Yapısal Referans (Tablo[Sütun])

Verinizi Tablo'ya çevirmek (Ctrl+T) en güçlü hata önleme tekniğidir. Tablo'ya yeni satır eklediğinizde:

  • Formüller otomatik genişler — toplam satırı kendi kendini günceller.
  • Sütun silindiğinde formül #BAŞV! yerine net bir uyarıyla bilgilendirir.
  • Sütun adı değişirse referans otomatik güncellenir.
=TOPLA(Siparişler[Tutar])
=TOPLAÇARP((Siparişler[Tarih]>=A1)*(Siparişler[Tutar]))

KIRP ve TEMİZ ile Boşluk Temizliği

KIRP (TRIM) baştaki, sondaki ve aradaki çift boşlukları siler. TEMİZ (CLEAN) yazdırılamayan karakterleri (CR, LF, sekme) temizler. Web'den veya başka sistemden gelen verilerde mutlaka kullanın.

=KIRP(TEMİZ(A1))
=TRIM(CLEAN(A1))

// Arama yaparken peşin temizle:
=DÜŞEYARA(KIRP(F2); A:C; 2; YANLIŞ)

METNEÇEVİR ve SAYIYAÇEVİR ile Tip Uyumu

Metin biçiminde gelen sayıları SAYIYAÇEVİR ile zorlayın; sayıları metin gibi göstermek için METNEÇEVİR kullanın. DÜŞEYARA'da bir tarafın metin diğerinin sayı olması #YOK'un en sık sebebidir.

=DÜŞEYARA(SAYIYAÇEVİR(F2); A:C; 2; YANLIŞ)
=DÜŞEYARA(METNEÇEVİR(F2; "0"); A:C; 2; YANLIŞ)

Hata Görsel Tespit — Koşullu Biçimlendirme

Büyük modellerde hatalı hücreyi gözle aramak zaman kaybıdır. Giriş → Koşullu Biçimlendirme → Yeni Kural → Formül kullan ile hata içeren hücreleri kırmızıya boyayabilirsiniz.

Kural formülü:

=EHATALIYSA(A1)
=ISERROR(A1)

Adım adım uygulama:

  1. Tüm veri aralığını seçin (örn. A2:Z1000).
  2. Giriş → Koşullu Biçimlendirme → Yeni Kural.
  3. "Biçimlendirilecek hücreleri belirlemek için bir formül kullan" seçin.
  4. Formüle =EHATALIYSA(A2) yazın (üst-sol hücreyi referans alın, mutlak yapmayın).
  5. Biçim → Dolgu → Kırmızı seçin.
  6. Tamam.

Bundan sonra modelde hata oluşan her hücre anında kırmızıya döner. Koşullu Biçimlendirme'yi =EYOKSA(A2) ile sadece #YOK için, ya da =EHATAYSA(A2) ile #YOK hariç tüm hatalar için de uygulayabilirsiniz.

İleri Konu: Toplu Hata Tespit ve Loglama

Yüzlerce sayfalı bir Excel modelinde hatalı hücrelerin nerede olduğunu bulmak için Excel'in iki yerleşik aracı vardır.

Yöntem 1 — F5 → Özel → Formüller → Hatalar

  1. Modeli açın, herhangi bir hücreye tıklayın.
  2. F5 tuşuna basın (Git iletişim kutusu açılır).
  3. "Özel..." (Special) düğmesine tıklayın.
  4. "Formüller" seçin, altında yalnızca "Hatalar" kutusunu işaretli bırakın.
  5. Tamam tıklayın — Excel tüm hatalı hücreleri seçer.

Bu seçimden sonra hücreleri tek seferde silebilir, sarıya boyayabilir veya raporlayabilirsiniz.

Yöntem 2 — Hata Sayım Formülü

Toplam kaç hücrede hata olduğunu öğrenmek için:

=TOPLA.ÇARPIM(EHATALIYSA(A1:Z1000)*1)
=SUMPRODUCT(--ISERROR(A1:Z1000))

Veya M365 sürümünde basitçe:

=SAYI(SATIRSAY(FİLTRE(A1:Z1000; EHATALIYSA(A1:Z1000))))

Yöntem 3 — VBA ile Programatik Tespit

Çok sayfalı kapalı kutu modeller için VBA makrosu yazılabilir. Aşağıdaki makro tüm sayfalardaki hatalı hücreleri yeni bir HataLog sayfasına yazar:

Sub HatalariBul()
    Dim ws As Worksheet, log As Worksheet
    Dim hücre As Range, satır As Long
    On Error Resume Next
    Set log = ThisWorkbook.Sheets("HataLog")
    If log Is Nothing Then
        Set log = ThisWorkbook.Sheets.Add
        log.Name = "HataLog"
    End If
    On Error GoTo 0
    log.Cells.Clear
    log.Range("A1:D1").Value = Array("Sayfa", "Hücre", "Formül", "Hata")
    satır = 2
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "HataLog" Then
            For Each hücre In ws.UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors)
                log.Cells(satır, 1).Value = ws.Name
                log.Cells(satır, 2).Value = hücre.Address
                log.Cells(satır, 3).Value = hücre.Formula
                log.Cells(satır, 4).Value = CStr(hücre.Value)
                satır = satır + 1
            Next hücre
        End If
    Next ws
    MsgBox satır - 2 & " hata bulundu."
End Sub

Makro çalıştırıldığında HataLog sayfasında her hatalı hücrenin sayfası, adresi, formülü ve hata kodu listelenir. Büyük finansal modellerde aylık denetim aracı olarak kullanılabilir.

Sıkça Sorulan Sorular (SSS)

Soru 1: Hata vermeyen formül nasıl yazılır?

Profesyonel modellerde her formülü EĞERHATA ile sarmak yerine kaynağında önlemeyi tercih edin. Veri Doğrulama, Yapısal Referans (Tablo), KIRP/TEMİZ ile temizlik ve doğru veri tipleri %90 hatayı baştan önler. Kalan %10 için EĞERHATA / EĞERYOKSA mantıklı kullanılır. Aşırı EĞERHATA kullanımı modeli yavaşlatır ve bug'ları gizler.

Soru 2: EĞERHATA performansı düşürür mü?

Evet, dolaylı olarak. EĞERHATA formülü iki kez hesaplar — önce normal sonucu, hata varsa alternatifi. Birkaç yüz hücrede fark yoktur ama yüz binlerce satırlı tabloda toplam yenileme süresi 2-3 katına çıkabilir. Büyük modellerde dinamik dizi (FİLTRE) ve not_found parametresine sahip ÇAPRAZARA tercih edin.

Soru 3: VBA ile hata yakalama Excel formülünden farkı?

Hücre formülünde EĞERHATA, formülün döndüğü hata değerini yakalar. VBA'da On Error Resume Next veya On Error GoTo etiket ile çalışma zamanı hatalarını (runtime error) yakalarsınız — bunlar ayrı dünyalardır. VBA hatası bir hücre değil bir kod akışıdır; macro çalışmasını durdurur. Formül hatası ise sadece hücre değerini bozar, dosyayı durdurmaz.

Soru 4: Microsoft 365 hatalar Excel 2019'dan farklı mı?

Çoğunluğu aynıdır — #YOK, #DEĞER!, #BAŞV!, #BÖL/0!, #SAYI!, #AD?, #BOŞ! her sürümde vardır. Microsoft 365'e özgü iki hata #YAY! ve #HESAP! dinamik dizi motorundan gelir; Excel 2019'da bu hatalar yoktur çünkü dinamik dizi de yoktur. M365 dosyasını Excel 2019'da açarsanız dinamik dizi formülleri "_xlfn." ön ekiyle gösterilir ve #AD? hatası verir.

Soru 5: Excel hata değerleri Türkçe ve İngilizce karşılığı nedir?

Türkçe Excel ile İngilizce Excel arasındaki tüm hata kodları aşağıdaki tabloda:

TürkçeİngilizceAnlamı
#YOK#N/ADeğer bulunamadı
#DEĞER!#VALUE!Yanlış veri tipi
#BAŞV!#REF!Geçersiz başvuru
#BÖL/0!#DIV/0!Sıfıra bölme
#SAYI!#NUM!Geçersiz sayı
#AD?#NAME?Tanımsız ad
#BOŞ!#NULL!Aralık kesişmiyor
#YAY!#SPILL!Dinamik dizi taşma engeli
#HESAP!#CALC!Dinamik dizi hesaplanamadı
##########Sütun dar (hata değil)

Aynı şekilde fonksiyon adları da farklıdır: DÜŞEYARA = VLOOKUP, EĞER = IF, EĞERHATA = IFERROR, KAÇINCI = MATCH, TOPLA = SUM, ORTALAMA = AVERAGE, EĞERSAY = COUNTIF, ÇOKETOPLA = SUMIFS, ÇAPRAZARA = XLOOKUP. Çok dilli ekiplerde her iki adı da bilmek pratiktir.

Sonuç

Excel formül hataları korkutucu görünseler de aslında size bir şey söylüyorlar. #YOK "kayıt yok"; #DEĞER! "veri tipi yanlış"; #BAŞV! "başvuru kayboldu"; #BÖL/0! "sıfıra bölme"; #YAY! "alan dolu". Her hata kodu bir teşhistir — onu okumayı öğrenirseniz Excel size sorunu sunmuş olur.

Eyleme dönük 5 madde:

  1. Her DÜŞEYARA / ÇAPRAZARA formülünü EĞERYOKSA veya not_found parametresiyle sarın. "Bulunamadı" mesajı kullanıcı dostudur, raporlar temiz görünür.
  2. Bölme operasyonlarında EĞER veya EĞERHATA ile sıfır kontrolü yapın. =EĞER(B1=0; ""; A1/B1) finansal modelin temel yapı taşıdır.
  3. Verinizi Tablo'ya (Ctrl+T) çevirin. Yapısal referans, otomatik genişleme ve referans güvenliği üç başlıkta hata olasılığını çökertir.
  4. Veri Doğrulama'yı yaygın kullanın. Hücreye yanlış tip girilemezse hata da oluşmaz.
  5. Koşullu Biçimlendirme ile =EHATALIYSA(A1) kuralını her büyük modelde uygulayın. Hatalı hücreler kırmızıya boyanır, denetim 10 saniyede biter.

ExcelDepo'da yer alan diğer rehberlerle birlikte bu sayfayı yer imine ekleyin. Bir sonraki Excel raporunuzda #YOK veya #DEĞER! gördüğünüzde panik yapmadan ilgili bölüme dönün — çözüm üç-beş tıklama uzakta olacak. Hata yakalamayı, hata önlemeyi ve hata loglamayı bir arada uygulayan modeller, profesyonel Excel kullanıcısının imzasıdır.