Soru topla.çarpım döngü içerisinde

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
Kusura bakmayın bu konu ile ilgili bir çok örnek var ama ben bu topla.çarpımı döngü içerisinde bir türlü haledemedim
döngüye almadan başka yöntemle halletmiştim ama buna kafam basmadı aşağıya kısa bir örnek ekledim ama zaten hatalı
nerede nasıl düzeltme yapmam gerekiyor

Kod:
gunler = s1.Range("H2:AL2").Address
carpan = s1.Range("H3:AL3").Address
    
C1 = "AT"
C2 = 0

On Error Resume Next
For i = 4 To son
s1.Cells(i, 42) = Evaluate("=SumProduct((" & gunler & "=" & C1 & ")*(" & carpan & ">" & C2 & ")*(" & s1.Cells("H" & i & ":AL" & i).Address & "))") 'AT
MsgBox ("test")
Next i
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki bölümde yazım hatası var.

Cells yerine Range kullanmalısınız. Belki başka hatalarda vardır. İlk gözüme çarpanı yazdım.

s1.Cells("H" & i & ":AL" & i).Address

C1 kriteri yazımıda hatalı görünüyor. Aşağıdaki gibi olmalıdır.

"=""" & C1 & """)

Ayrıca kodu hangi sayfada çalıştırırsanız o sayfadaki hücreleri dikkate alacaktır. Sayfa adınıda devreye almanızda fayda var.
 

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
Tamam hocam notunuza göre revize etmeye çalışacağım.
 

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
Hocam linkteki 3. örneği uyguladım çalıştı ama döngü içerisine alınca biryerde hata yapıyorum
2. mesajınıza göre düzenleme yapacağım henüz bakamadım dosyama
 

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
Hocam sRangeD = Range("H" & i & ":AL" & i).Address bu kısmı döngünün içine aldığımda çalışmıyor
döngüye almadığımda sorun olmuyor sanırım sRangeD kısmını tanımlayamadım. birkaç deneme yaptım ama olmadı

Kod:
Private Sub CommandButton14_Click()
    Dim s1 As Worksheet, son As Long, i As Long, j As Long
    Set s1 = Sheets("pntj")
    Set s2 = Sheets("mesai")

    sRangeA = Range("H4:AL4").Address
    sRangeB = Range("H2:AL2").Address
'    sRangeC = Range("H3:AL3").Address
    
    Criter1 = "AT"
    Criter2 = 1

    On Error Resume Next
    For i = 4 To 10
    sRangeD = Range("H" & i & ":AL" & i).Address
        s1.Cells(i, 42) = Evaluate("=SumProduct((" & sRangeA & "=""" & Criter1 & """)*(" & sRangeB & ">=" & Criter2 & ")*(" & sRangeD & "))")
'        s1.Cells(i, 42) = Evaluate("=SumProduct((" & sRangeA & "=""" & Criter1 & """)*(" & sRangeB & ">=" & Criter2 & ")*(" & sRangeC & "))")
    Next i
    
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Döngünün içine aşağıdaki satırı ekleyip oluşan formülü kontrol edebilirsiniz. Kodu adım adım çalıştırıp test edebilirsiniz.

MsgBox "=SumProduct((" & sRangeA & "=""" & Criter1 & """)*(" & sRangeB & ">=" & Criter2 & ")*(" & sRangeD & "))"

Yine sonuç alamazsanız lütfen örnek dosya paylaşınız.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Keşke sadece konuyla ilgili sayfayı ve kodları paylaşsaydınız.
 

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
Yarın düzeltip paylaşırım hocam son mesajı sildim
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,245
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tam olarak ne olmasını istiyorsunuz?
 

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
H2:AL2 arası sıfırdan büyük olanlar ve H4:AL4 arası "AT" olanları H3:AL3 e göre toplayacağım.
H4:AL4 arasınıdöngü içerisine almak istiyorum.
 

Korhan Ayhan

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

Butonu aynı sayfada kullandığınız için daha önce belirttiğim sayfa adı durumunu koda entegre etmedim. Kodu farklı sayfadan çalıştırırsanız hatalı sonuçlar verecektir.

C++:
Sub Test()
    Dim S1 As Worksheet, Son As Long, i As Long, j As Long
    Dim sRangeA As String, SRangeB As String, sRangeC As String
    Dim Criteria1 As Byte, Criteria2 As String
    
    Set S1 = Sheets("pntj")

    sRangeA = Range("H2:AL2").Address
    sRangeC = Range("H3:AL3").Address
    
    Criteria1 = 0
    Criteria2 = "AT"

    For i = 4 To 10
        SRangeB = Range("H" & i & ":AL" & i).Address
        S1.Cells(i, 42) = Evaluate("=SumProduct((" & sRangeA & ">" & Criteria1 & ")*(" & SRangeB & "=""" & Criteria2 & """)*(" & sRangeC & "))")
    Next i
    
    Set S1 = Nothing
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 

burhancavus61

Altın Üye
Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
03.11.2024
Teşekkür ederim hocam sorunsuz çalıştı
 
Üst