etopla - sumıf fonksiyonunda anlaşılamayan hata

Katılım
25 Şubat 2006
Mesajlar
56
ekteki dosyada anlaşılacaktır sorun ancak özetlemem gerekirse;

data sayfasındaki kod sütunu matrah sayfasında da var ve sumıf/etopla ile aynı olan değerlerin toplamının datada matrahın altına gelmesini istiyorum. kod tarih - fiş no - fatura sütunlarının birleştirilmesinden oluşuyor.

datadaki tek satırın kodunu matrah sayfasında süzdüğünüzde olması gereken toplam 2.352,80.- ancak görüldüğü üzere benim formülümle 20.293,72.- olarak hesaplanıyor.

bunun sebebi ne olabilir?
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Data sayfasındaki F2 hücresine aşağıdaki formülü yazın.

HTML:
=TOPLA.ÇARPIM((matrah!$B$2:$B$77=data!B2)*(matrah!$C$2:$C$77=data!C2)*(matrah!$H$2:$H$77=data!D2)*(matrah!$I$2:$I$77))
 
Katılım
25 Şubat 2006
Mesajlar
56
sayın fpc,
ilginize teşekkür ederim. tarih kısmını text fonksiyonu ile tanıttığımda da çözebiliyorum problemi ancak neden böyle bir hata verdiğini öğrenmek istiyorum. sumıf / etopla sık kullandığımız fonksiyonlardan biri olduğundan daha sonra beni yanıltmasını istemiyorum.
 

mehmett

Altın Üye
Katılım
18 Mayıs 2005
Mesajlar
2,571
Excel Vers. ve Dili
Excel 2010 Türkçe
Sn ilkayteke,

Dosyanızdaki ETOPLA fonksiyonunda ölçüt olarak verdiğiniz A2 hücresinde 18 haneli bir Kod var. Halbuki Etopla fonksiyonu bu 18 haneli kodun ilk 15 hanesini alıyor.

Böyle olunca

391910000792401944 kodunun matrahı 2352,80 olması gerekirken

391910000792401943 kodunun matrahı olan 17940,92'yi de ilave ederek

20293,72 değerini buluyor.

Çünkü her iki kodun ilk 15 haneleri aynı: 391910000792401

Böylece Etopla fonksiyonunda hane sayısı 15'den büyük olan ölçüt vermememiz gerektiğini anlamış olduk.
 
Katılım
25 Şubat 2006
Mesajlar
56
açıklamanız için çok teşekkür ederim. ancak şöyle bir sorum daha var verdiğiniz cevaba istinaden. kodun bir kısmını oluşturan tarih sütunundaki tarihleri text formülüyle aldığımda doğru cevabı veriyor.
textle almasam 39275 gibi bir sayı yani 5 hane ama text formülüyle alırsam 31/12/2007 10 hane. ilk 15 haneyi ölçüt olarak alıyorsa sonucun gene de hatalı çıkması gerekmezmiydi?
ilgilerinize teşekkür ederim.
 

mehmett

Altın Üye
Katılım
18 Mayıs 2005
Mesajlar
2,571
Excel Vers. ve Dili
Excel 2010 Türkçe
Demek ki sayı olunca ilk 15 haneyi alıyor, metin (text) olunca bu limit daha büyük oluyormuş.

Zaten bir excel hücresine 15 haneden büyük sayı yazılamıyor. (15. haneden sonraki rakamlar sıfıra dönüşüyor)
 
Son düzenleme:
Katılım
25 Şubat 2006
Mesajlar
56
tamam çok teşekkür ederim ilginize. ilginç bir bilgi oldu ama sumıf / etopla kullanan arkadaşlar için yanılmasını engelleyeceğini umarım..
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
ETOPLA, EĞERSAY gibi Koşullu İşlem Gerçekleştiren Formüllere DİKKAT

Etopla (Sumif) veya Eğersay(Countif) fonksiyonlarını kullanırken dikkatli olmakta fayda var.

Mehmet bey'in de belirttiği gibi 15 haneden daha büyük sayıların Excel'e numerik bir değer olarak aynı duyarlılık sınıfı ile girilmesi; zaten mümkün değil.

(A) 123456789012345123

Bu şekilde bir sayı girerseniz, -aşağıdaki gibi- sondaki 3 rakamın "000" olarak değiştiğini görürsünüz.

(B) 123456789012345000

Eğer duyarlılık ihtiyacınız "15" digitten büyükse bu bir sorun teşkil eder.

(A) da belirtilen sayının başına bir tek tırnak (apostrof) koyarsanız, bu sorunu bir nebze aşabilirsiniz. Girdiğiniz sayı; numerik (sayısal) bir değer değil, text (metin) karakterli bir string olmuştur artık.

Peki bu şekilde girilen bir sayı ile işlem yapabilir misiniz? Kısmen yapabilirsiniz. Ama; formüllerde parametre olarak bunları kullanacaksanız, dikkatli olmakta fayda var.

ETOPLA (Sumif), EĞERSAY (Countif) ve Veritabanı fonksiyonları gibi (VSEÇTOPLA(Dsum), VSEÇSAY (DCount) vb...) herhangi bir koşula bağlı olarak çalışan fonksiyonlar; YANLIŞ sonuçlar üretirler.

Eğer bir hücrede 15 digit'ten daha fazla ve tamamı numerik karakter (sayı) içeren bir veriniz varsa, -ister nümerik ister metin olarak girilsin-, yukarıdaki fonksiyonları kullanmanızı tavsiye etmem.

Bunun yerine DİZİ formülleri ile çalışın. Dizi formülleri, kendi içinde sizin istediğiniz gibi koşul oluşturururlar.

Standart ETOPLA fonskiyonu kullanımı yerine TOPLA fonksiyonunun Dizi şeklini kullanın. Şöyle ki:

=ETOPLA(A1:A4;A1;B1:B4) yerine
=TOPLA(((A1:A4)=A1)*(B1:B4)) kullanının. Tabi Ctrl+Shift+Enter ile giriş yaparak...

İkisi de normal şartlarda aynı sonucu üretir. Ama 15 digitten sonra, ETOPLA yanlış sonuç üretirken; Dizi TOPLA fonskiyonu doğru sonuç döndürmeye devam edecektir.

Bu söylediklerimiz; hücrede tamamı sayılardan oluşan bir string için geçerlidir. Örneğin; aşağıdaki gibi bir hücre değeri için standart formüllerin kullanılmasında hiç bir sakınca yoktur.

123456789012345ab123456

Çünkü, yukarıdaki gibi bir değer; formüller içinde, hiçbir zaman sayı olarak algılanamaz.

Sağlıcakla kalın.
 
Üst