SUMPRODUCT VBA

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,453
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
"C00001" projesi için "54" değer tipine uygun 30.09.2019 tariihli kayıt olmadığı için sıfır değeri sonuç olarak gelmektedir. Eğer bahsettiğiniz durum bu ise makroda sorun yok.
 
Katılım
28 Kasım 2007
Mesajlar
919
Excel Vers. ve Dili
Office 2010 İngilizce
"C00001" projesi için "54" değer tipine uygun 30.09.2019 tariihli kayıt olmadığı için sıfır değeri sonuç olarak gelmektedir. Eğer bahsettiğiniz durum bu ise makroda sorun yok.
"C00001" projesi için "54" değer tipi için 10.123,11. TL değer ve 10.09.2019 tarihli kayıt var sheet 1 de
sheet2 de "I2" kolonu da 10.123,11, "J2" kolonuna da 10,123,11 gelmesi gerek ama sadece "I2" ye değer geliyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,453
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Son eklediğiniz dosyada bu veri hangi satırda? Ben göremedim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,453
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
K2-L2-M2 çin hesaplama yapılacak mı?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,453
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Döngü içinde formülü kurguladım. Kurguladığım formülü hücreye yazdırdığımda hesaplama yapıyor. Fakat aynı formülü EVALUATE içine alınca hata değeri üretiyor. Bu sebeple döngüyü kaldırdım. Aşağıdaki yapıyı kurguladım. Daha hızlı sonuç vermesi gerekir. Deneyiniz.

Kod:
Sub Criteria_Sumproduct()
    Dim Son As Long, Satir As Long
     
    Sheet2.Select

    Son = Sheets("Sheet1").Range("A" & Rows.Count).End(3).Row

    Range("J2:M" & Rows.Count).ClearContents
  
    Satir = Cells(Rows.Count, "A").End(3).Row
  
    With Range("J2:M" & Satir)
        .Formula = "=SUMPRODUCT((Sheet1!$A$2:$A$" & Son & "=$A2)*(CLEAN(Sheet1!$F$2:$F$" & Son & ")=$I$1)*(TEXT(Sheet1!$R$2:$R$" & Son & ",""aaayyy"")=TEXT(J$1,""aaayyy"")),(Sheet1!$M$2:$M$" & Son & "))"
        .Value = .Value
    End With
 
    MsgBox "İşleminiz tamamlanmıştır."
End Sub

Ek olarak döngülü yöntemide paylaşıyorum. Belki çözüm bulan çıkabilir.

EVALUATE satırını aktif ettiğinizde sonuç üretmediğini görebilirsiniz.

Kod:
Sub Criteria_Sumproduct()
    Dim Son As Long, X As Long, Y As Byte, Satir As Long
       
    Sheet2.Select

    Son = Sheets("Sheet1").Range("A" & Rows.Count).End(3).Row

    Range("J2:M" & Rows.Count).ClearContents
    
    Satir = Cells(Rows.Count, "A").End(3).Row
    
    For X = 2 To Satir
        For Y = 10 To 13
            Cells(X, Y) = "=SUMPRODUCT((Sheet1!$A$2:$A$" & Son & "=""" & Cells(X, "A") & """)*(CLEAN(Sheet1!$F$2:$F$" & Son & ")=""" & Cells(1, "I") & """)*(TEXT(Sheet1!$R$2:$R$" & Son & ",""aaayyy"")=TEXT(""" & Cells(1, Y) & """,""aaayyy"")),(Sheet1!$M$2:$M$" & Son & "))"
            'Cells(X, Y) = Evaluate("=SUMPRODUCT((Sheet1!$A$2:$A$" & Son & "=""" & Cells(X, "A") & """)*(CLEAN(Sheet1!$F$2:$F$" & Son & ")=""" & Cells(1, "I") & """)*(TEXT(Sheet1!$R$2:$R$" & Son & ",""aaayyy"")=TEXT(""" & Cells(1, Y) & """,""aaayyy"")),(Sheet1!$M$2:$M$" & Son & "))")
        Next
    Next
   
    MsgBox "İşleminiz tamamlanmıştır."
End Sub
 
Üst