EGERHATA ve EGERYOKSA — Hata Yönetimi Sanati
Hata Yönetimi Neden Önemlidir?
Excel formülleri bazen hata değerleri döndürür: #YOK, #DEĞER!, #SAYI/0!, #BAŞV!, #AD?. Bu hata değerleri kaynaklarını gizlemez; ancak son kullanıcıya teslim edilen bir raporda görüntülenmeleri profesyonelliği zedeler ve okuyucuyu kafa karışıklığına sürükler. EĞERHATA (IFERROR) ve EĞERYOKSA (IFNA) bu hataları yakalayıp kullanıcı dostu mesajlara dönüştürmenizi sağlar.
Bu yazıda iki fonksiyonun farklarını, doğru kullanım senaryolarını, sık yapılan hataları ve ileri düzey kombinasyonları anlatıyoruz.
EĞERHATA Sözdizimi
=EĞERHATA(değer; eger_hata_ise)
İlk parametredeki ifade hata üretirse ikinci parametredeki değer döndürülür. Tüm hata türlerini yakalar.
=EĞERHATA(DÜŞEYARA(A2; B:E; 3; YANLIŞ); "Bulunamadı")
EĞERYOKSA Sözdizimi
=EĞERYOKSA(değer; eger_yok_ise)
Yalnızca #YOK hatasını yakalar. Diğer hata türleri (#DEĞER!, #SAYI/0! gibi) olduğu gibi geçer.
=EĞERYOKSA(DÜŞEYARA(A2; B:E; 3; YANLIŞ); "Bulunamadı")
İki Fonksiyon Arasındaki Kritik Fark
EĞERHATA tüm hataları aynı kefeye koyduğu için, formülünüzdeki gerçek bir bozukluğu (yanlış sütun başvurusu, sıfıra bölünme, hatalı sözdizimi) gözden kaçırmanıza neden olabilir. EĞERYOKSA yalnızca arama fonksiyonlarının doğal kullanım hatasını yakalar; diğer hatalar görünür kalır ve düzeltme fırsatı verir.
Pratik öneri: DÜŞEYARA, KAÇINCI, XLOOKUP gibi arama fonksiyonlarında EĞERYOKSA tercih edin. Yalnızca her ihtimale karşı tüm hataları gizlemek istediğiniz son katmanlarda EĞERHATA kullanın.
Karşılaştırma Tablosu
| Hata Türü | EĞERHATA yakalar | EĞERYOKSA yakalar |
|---|---|---|
| #YOK | Evet | Evet |
| #DEĞER! | Evet | Hayır |
| #SAYI/0! | Evet | Hayır |
| #BAŞV! | Evet | Hayır |
| #AD? | Evet | Hayır |
| #SAYI! | Evet | Hayır |
Senaryo 1: Bölme İşlemlerinde
Sıfıra bölünme #SAYI/0! hatası verir. EĞERHATA ile sıfır veya boş döndürülebilir.
=EĞERHATA(B2/C2; 0)
Burada EĞERYOKSA işe yaramaz çünkü hata #SAYI/0! türündedir.
Senaryo 2: Arama Fonksiyonlarında
Müşteri tablosunda olmayan bir kod arandığında DÜŞEYARA #YOK döndürür. EĞERYOKSA bu durumu kullanıcı dostu mesajla değiştirir.
=EĞERYOKSA(DÜŞEYARA(A2; Müşteriler!A:E; 3; YANLIŞ); "Yeni Müşteri")
Eğer DÜŞEYARAnın kendisinde bir yazım hatası olursa (örneğin sütun numarası yanlış), bu hata EĞERYOKSAyı geçer ve sizi uyarır.
Senaryo 3: İç İçe Aramalar
Birden fazla tabloda sırayla arama yapan iç içe DÜŞEYARA yapısında EĞERYOKSA mükemmel uyum sağlar.
=EĞERYOKSA(DÜŞEYARA(A2; Tablo1!A:B; 2; YANLIŞ); EĞERYOKSA(DÜŞEYARA(A2; Tablo2!A:B; 2; YANLIŞ); "Bulunamadı"))
Önce Tablo1de arar, bulamazsa Tablo2ye geçer, orada da yoksa Bulunamadı yazar.
Senaryo 4: Dizi Formüllerinde
FİLTRE fonksiyonunun üçüncü parametresi zaten boş döndürmeyi yönetir, ancak yine de EĞERHATA bir güvenlik katmanı eklemek için kullanılabilir.
=EĞERHATA(FİLTRE(A:A; B:B="X"); "Kayıt yok")
Yaygın Yanlış: Her Yerde EĞERHATA
Bazı kullanıcılar tüm formülleri EĞERHATA ile sarar; sonuç temiz görünür ama gerçek hatalar gizlenir. Sıfıra bölme, hatalı başvuru, yanlış sütun seçimi gibi durumlarda formül sessizce yanlış sonuç döndürür ve fark etmek aylar alır. Hata yönetimi cerrahi olmalıdır: yalnızca beklenen ve kabul edilebilir hata türlerini yakalayın.
İleri Teknik: Hata Mesajını Bağlama
Birden fazla hata türünü ayırt etmek için HATA.TÜRÜ fonksiyonu ile birleşim kurulabilir.
=EĞER(EHATALIYSA(B2/C2); ELEMAN(HATA.TÜRÜ(B2/C2); "#BOŞ!"; "#SAYI/0!"; "#DEĞER!"; "#BAŞV!"; "#AD?"; "#SAYI!"; "#YOK"); B2/C2)
Hangi hatanın oluştuğunu kullanıcıya gösterir, debug için faydalıdır.
Sonuç
EĞERHATA bir kalkandır, EĞERYOKSA bir cerrahi neşterdir. Profesyonel raporlama EĞERYOKSAnın hassas yakalamasıyla başlar, gerektiğinde EĞERHATA ile bitirilir. Hataları kapatmak değil, hangi hataların gerçekten kabul edilebilir olduğuna karar vermek ustalıktır. Bir sonraki şablonunuzda EĞERHATA sarmalamalarını gözden geçirin; çoğunu EĞERYOKSAya çevirerek gizli sorunları gün yüzüne çıkarın. Bu küçük disiplin, raporlarınıza yıllarca güven sağlar.