Macro da Koşullu ToplaÇarpım

Katılım
22 Temmuz 2006
Mesajlar
186
Excel Vers. ve Dili
2003
Çalışma kitabımda kayıtlarımın hepsini bir sayfada tutuyorum. Bu benim için istediğim bilgiye çok çabuk ulaşmam için büyük kolaylık oluşturuyor.

Ancak Verilerim çoğaldıkça ToplaÇarpım Formülü işimi görmez oldu. Bu işi macrolarla yapmayı denedim ama beceremedim.

Yardımlarınıza ihtiyacım Var. Bir örnek dosya ekledim ve Sayfa4 de gerekli açıklamaları yaptım. .

Kolay Gelsin ! !
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,679
Excel Vers. ve Dili
Excel 2019 Türkçe
Aşağıdaki kodu dener misiniz?

Not: Kod biraz daha kısaltılabilir

Kod:
Sub FF()
For x = 3 To 33
    tarih = Cells(x, 1).Address
    
    Cells(x, 2) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A9900=" & tarih & ")*(Sayfa1!C2:C9900=B1)*(Sayfa1!F2:F9900)),0)")
    Cells(x, 3) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A9900=" & tarih & ")*(Sayfa1!C2:C9900=B1)*(Sayfa1!G2:G9900)),0)")
    Cells(x, 4) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A9900=" & tarih & ")*(Sayfa1!C2:C9900=B1)*(Sayfa1!H2:H9900)),0)")
    
    Cells(x, 5) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A9900=" & tarih & ")*(Sayfa1!C2:C9900=E1)*(Sayfa1!F2:F9900)),0)")
    Cells(x, 6) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A9900=" & tarih & ")*(Sayfa1!C2:C9900=E1)*(Sayfa1!G2:G9900)),0)")
    Cells(x, 7) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A9900=" & tarih & ")*(Sayfa1!C2:C9900=E1)*(Sayfa1!H2:H9900)),0)")
    
    Cells(x, 8) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A9900=" & tarih & ")*(Sayfa1!C2:C9900=H1)*(Sayfa1!F2:F9900)),0)")
    Cells(x, 9) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A9900=" & tarih & ")*(Sayfa1!C2:C9900=H1)*(Sayfa1!G2:G9900)),0)")
    Cells(x, 10) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A9900=" & tarih & ")*(Sayfa1!C2:C9900=H1)*(Sayfa1!H2:H9900)),0)")

Next
End Sub
 
Katılım
22 Temmuz 2006
Mesajlar
186
Excel Vers. ve Dili
2003
Sayın Hamitcan ilgine ve yardımlarına çok çok teşekkür ederim

Sizin kodlarınızı ben şu şekilde değiştirdim,

Sub EEE()
For X = 3 To 33
Tarih = Cells(X, 1).Address

Cells(X, 2) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A65536=" & Tarih & ")*(Sayfa1!C2:C65536=B1)*(Sayfa1!F2:F65536)),0)")
Cells(X, 3) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A65536=" & Tarih & ")*(Sayfa1!C2:C65536=B1)*(Sayfa1!G2:G65536)),0)")
Cells(X, 4) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A65536=" & Tarih & ")*(Sayfa1!C2:C65536=B1)*(Sayfa1!H2:H65536)),0)")

Cells(X, 5) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A65536=" & Tarih & ")*(Sayfa1!C2:C65536=E1)*(Sayfa1!F2:F65536)),0)")
Cells(X, 6) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A65536=" & Tarih & ")*(Sayfa1!C2:C65536=E1)*(Sayfa1!G2:G65536)),0)")
Cells(X, 7) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A65536=" & Tarih & ")*(Sayfa1!C2:C65536=E1)*(Sayfa1!H2:H65536)),0)")

Cells(X, 8) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A65536=" & Tarih & ")*(Sayfa1!C2:C65536=H1)*(Sayfa1!F2:F65536)),0)")
Cells(X, 9) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A65536=" & Tarih & ")*(Sayfa1!C2:C65536=H1)*(Sayfa1!G2:G65536)),0)")
Cells(X, 10) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A65536=" & Tarih & ")*(Sayfa1!C2:C65536=H1)*(Sayfa1!H2:H65536)),0)")

Next
End Sub
Ancak Malum 65536 olayı çok yavaşlatıyor.
Bunu dolu olan son satır için şöyle bişey denedim ama hata verdi,


son = "Sayfa2!c2:c" & [c65536].End(3).Row


65536 olan yerlerede son yazdım ama olmadı
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,549
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Kodu aşağıdaki gibi değiştirip denermisiniz.

Kod:
Sub SONUÇLARI_GÜNCELLE()
    For X = 3 To 33
    Tarih = Cells(X, 1).Address
    Son = Sheets("Sayfa1").[C65536].End(3).Row
    Cells(X, 2) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A" & Son & "=" & Tarih & ")*(Sayfa1!C2:C" & Son & "=B1)*(Sayfa1!F2:F" & Son & ")),0)")
    Cells(X, 3) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A" & Son & "=" & Tarih & ")*(Sayfa1!C2:C" & Son & "=B1)*(Sayfa1!G2:G" & Son & ")),0)")
    Cells(X, 4) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A" & Son & "=" & Tarih & ")*(Sayfa1!C2:C" & Son & "=B1)*(Sayfa1!H2:H" & Son & ")),0)")
    Cells(X, 5) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A" & Son & "=" & Tarih & ")*(Sayfa1!C2:C" & Son & "=E1)*(Sayfa1!F2:F" & Son & ")),0)")
    Cells(X, 6) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A" & Son & "=" & Tarih & ")*(Sayfa1!C2:C" & Son & "=E1)*(Sayfa1!G2:G" & Son & ")),0)")
    Cells(X, 7) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A" & Son & "=" & Tarih & ")*(Sayfa1!C2:C" & Son & "=E1)*(Sayfa1!H2:H" & Son & ")),0)")
    Cells(X, 8) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A" & Son & "=" & Tarih & ")*(Sayfa1!C2:C" & Son & "=H1)*(Sayfa1!F2:F" & Son & ")),0)")
    Cells(X, 9) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A" & Son & "=" & Tarih & ")*(Sayfa1!C2:C" & Son & "=H1)*(Sayfa1!G2:G" & Son & ")),0)")
    Cells(X, 10) = Evaluate("IF(O3=1,SUMPRODUCT((Sayfa1!A2:A" & Son & "=" & Tarih & ")*(Sayfa1!C2:C" & Son & "=H1)*(Sayfa1!H2:H" & Son & ")),0)")
    Next
    MsgBox "SONUÇLAR GÜNCELLENMİŞTİR.", vbInformation
End Sub
 

Suskun

Altın Üye
Altın Üye
Katılım
27 Kasım 2006
Mesajlar
292
Excel Vers. ve Dili
Excel 19
Altın Üyelik Bitiş Tarihi
24.05.2032
Sn COST_CONTROL ve hamitcan gerekli açıklamaları vermişler.
Özellikle grup ve altgrup toplamlarını alabilmek için Sumif ve SumProduct'la epey uğraşmıştım. Ama tablolar büyüdükçe otomatik toplamda yavaşlama kaçınılmaz oluyor. Aşağıdaki fonksiyon yararlı olabilir diye düşünüyorum.


Kod:
Function GrupTopla(rng As Range, Aranan, kolon)
'Kullanım: GrupTopla(DbasKod;254;8)
'          GrupTopla(DbasKod;254;"H")
'          GrupTopla(A6:a360;25410;8) 
'          GrupTopla(A6:a360;"Kalem";8) vb.
' Kolon = Toplanacak Sutunun Kolon harfi yada sayısı ör: "H" yada 8 gibi.
'   
  Dim i As integer
  With rng
    For i = 1 To .Rows.Count
      If .Cells(i, 1) Like Aranan & "*" Then GrupTopla = GrupTopla + .Cells(i, kolon)
    Next i
  End With
End Function
iyi çalışmalar
 

Suskun

Altın Üye
Altın Üye
Katılım
27 Kasım 2006
Mesajlar
292
Excel Vers. ve Dili
Excel 19
Altın Üyelik Bitiş Tarihi
24.05.2032
Sn.captan
Çalışma kitabınızı verdiğim formulle yeni bir kitapta uygulamaya çalıştım ama sonuç gerçekten berbat.

Bir de sayfanın iki aylık veri olduğu düşünülürse sonuç daha da korkunç.

Bana sorarsanız formullerle çözüm ararak yerine tabloyu Özet tabloya dönüştürerek Kullanmanız en mantıklısı.
 
Katılım
22 Temmuz 2006
Mesajlar
186
Excel Vers. ve Dili
2003
Teşekkürler

Sayın Hamitcan,
Sayın Suskun, ve
Sayın Cost Control,

Yardımlarınız ve önerileriniz için hepinize tek tek teşekkür ederim.

Çok Kolay Gelsin
 
Üst