SUMPRODUCT fonksiyonunun makro hali

Katılım
26 Mayıs 2005
Mesajlar
3
Arkadaşlar merhaba,
Birkaç haftadır sitenizi takip ediyorum. İnanılmaz güzel şeyler yapmışsınız.
Hepinizin ellerine sağlık...
Benim bir sorunum var ve bugün tüm gün boyunca forum mesajlarına baktım belki çözebilirim diye fakat kafam iyice karıştı.
Þöyle ki;

veri giriş sayfam olan Sheet1'den analiz sayfam olan sheet2'ye
=SUMPRODUCT((sheet1!$A$1:$A$59839="LOKAL MALZEME")*(sheet1!$C$1:$C$59839=$B2);(sheet1!$D$1:$D$59839))
yukarıdaki formülü kullanarak veri toplamı getiriyorum. Ancak çalışırken her veri girişinde hesaplama yapıyor ve dosyam çok yavaşlıyor. Başka formül ve fonksiyonlarda kullandığımdan hesaplamanın otomatik olması gerekli.
Sayfama bir buton koyarak istediğim zaman makro ile hesaplamayı nasıl yaptırabilirim.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki şekilde deneyin. Burada sonucun yazılacağı hücre B1 dir.

[vb:1:f58160f05c]Sub hesapla()
Set s1 = Sheets("sheet1")
[B1] = WorksheetFunction.SumProduct(s1.[A1:A59839] = "LOKAL MALZEME", s1.[C1:C59839] = [B2], s1.[D1:D59839])
End Sub
[/vb:1:f58160f05c]
 
Katılım
26 Mayıs 2005
Mesajlar
3
Bir yerde yanlış yapıyor olmalıyım ama hala olmadı hata veriyor.
"Type mismatch" hatası veriyor. neyapmam lazım.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba
Ben de aynı formülü uyguladım aynı hatayı verdi.

Aşağıdaki gibi uygulayınca vermiyor


[b1] = Evaluate("SumProduct((a1:a50000= ""LOKAL MALZEME"") * (c1:c50000= b2) * (d1:d50000))")
 
Katılım
26 Mayıs 2005
Mesajlar
3
Merhaba,
İlgili hücreme #VALUE! yazıyor.
Daha basit olarak benim ihtiyacım;
başka bir sayfadaki iki sütunda text aratacağım. Doğrulanan tüm satırlardaki üçüncü sütun değerlerini toplatacağım.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

AA sayfasında verileriniz var
BB sayfasının C1 hücresine BB sayfasının B1 ve B2 hücrelerinde yazan verileri toplatmak istiyorsunuz

B1 hücresi için AA sayfasındaki a1:a5 arasındaki
B2 hücresi için AA sayfasındaki c1:c5 arasındaki hücreler

sub tc()
Set s1 = Sheets("bb")
s1.Range("c1") = Evaluate("SumProduct((aa!a1:a5=bb!b1) * (aa!c1:c5=bb!b2) * (aa!d1:d5))")

end sub
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

WorksheetFunction.SumProduct olarak hala çözemedim

Type mismatch hatası veriyor run time error 13
Saygılarımla
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Açıkçası bende çözemedim. :D , Bende araştırıyorum,bulunca açıklayacağım.
 
Katılım
13 Mayıs 2005
Mesajlar
6
Eğer sonuç yazılcak hücre + değişken, kullanarak If ile gerekli kodları yazarsanız, kendi SumProduct'unuzu oluşturabilirsiniz.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Sn.leventm
Ben de araştırdım Genellikle Alman sitelerinde gelen mesajlarda hep aynı hata mesajı

hücreye değer yazılacaksa açıklamalarında evaluate ile kullanıyorlar.

Sn.Vba man

İstenen kodu ifadenizde belirtiğiniz gibi açıklamalı olarak yazabilirmisiniz
Değiştirildi: Anladım siz döngü ve sayaç kullanmaktan bahsediyorsunuz.
 
Üst