• DİKKAT

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

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

Katılım
13 Mayıs 2005
Mesajlar
761
Excel Vers. ve Dili
2010 Türkçe
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
 
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.
 
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
 
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
 
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.
 
Keşke sadece konuyla ilgili sayfayı ve kodları paylaşsaydınız.
 
Tam olarak ne olmasını istiyorsunuz?
 
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.
 
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
 
Geri
Üst