• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Macro da Koşullu ToplaÇarpım

  • Konbuyu başlatan Konbuyu başlatan captan
  • Başlangıç tarihi Başlangıç tarihi
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 ! !
 
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
 
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ı
 
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
 
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
 
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ı.
 
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
 
Geri
Üst