• DİKKAT

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

koşullu toplama makrosu yanlış sonuç üretiyor.

Katılım
2 Şubat 2014
Mesajlar
760
Excel Vers. ve Dili
2007 Türkçe
İyi akşamlar, Aşağıda da görüleceği üzere D ve R kolonlarını döngüye aldım.

D ve R eşitse;

y döngüsündeki W hücrelerinin verilerini toplatıp
i döngüsündeki G hücresine yazdırmak istiyorum

ama makro yanlış sonuç üretiyor. Hatamı söyler iseniz sevinirim.
Teşekkürler.

Kod:
Sub Deneme()

ls = Cells(Rows.Count, "D").End(xlUp).Row
ds = Cells(Rows.Count, "R").End(xlUp).Row

For i = 2 To ls

tpl = 0

For y = 2 To ds

If Cells(i, "D") = Cells(y, "R") Then
'
tpl = Cells(y, "W").Value + Cells(y, "W").Value

Cells(i, "G") = tpl

End If: Next y: Next i

End Sub
 
2 adet for döngüsüne gerek yok. 1 tane kullanınız.
 
mrehaba antonio,
D ve R sütunu veri sayıları eşit değil, onun için 2 döngü kullanılıyor.
 
Tahmin ettim. Yinede bir döngü yeterli diye düşünüyorum. Farklı sütunların yerleri "Offset" (göreceli olarak) ayarlanabilir.
Örnek dosyanızı eklerseniz, yardım alma şansınız çok daha fazla olur diye düşünüyorum.
 
mrehaba antonio,
D ve R sütunu veri sayıları eşit değil, onun için 2 döngü kullanılıyor.

D ve R sütunlarından en son satırı daha fazla olanı bulmak ve döngüyü buna göre ayarlamak için aşağıdaki kodu kullanabilirsiniz: (Çalışmanızın, 1.nci sayfada olduğu varsayılmıştır)
Kod:
son = Sayfa1.Range("D:R").Find("*", , , , xlByRows, xlPrevious).Row
 
merhaba

EypBqv.jpg
 
Kod:
tpl = Cells(y, "W").Value + Cells(y, "W").Value
aşağıda ki gibi yaptım sorun düzeldi

Kod:
tpl = tpl + Cells(y, "W").Value
 
İki döngüye gerek yok.

Aşağıdaki kod ile yapabilirsiniz.

Kod:
Sub TEST()
    Dim X As Long, Son As Long
    
    Son = Cells(Rows.Count, 4).End(3).Row
    
    For X = 3 To Son
        Cells(X, 7) = WorksheetFunction.SumIf(Range("R:R"), Cells(X, 4), Range("W:W"))
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Çok teşekkürler Korhan Hocam,
Harika çözümler sunuyorsunuz bizlere.
Ömrünüz uzun olsun.
 
Amin, cümlemizin olsun..
 
Sayın Hocam, kırmızı ile belirttiğim değişiklikleri yaptım.
"50" sayısının kaç tane olduğunu saydırmak istedim lakin
çalışmadı makro. Bunu nasıl yapabilirim acaba ?

Kod:
Sub TEST()
    Dim X As Long, Son As Long
    
    Son = Cells(Rows.Count, 4).End(3).Row
    
    For X = 3 To Son
        Cells(X, 7) = WorksheetFunction.[COLOR="red"]Count[/COLOR]If(Range("R:R"), Cells(X, 4), Range("W:W")[COLOR="Red"],"50")[/COLOR]
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Neye göre 50 sayısı sayılacak?
 
Aynı örnek üzerinden gideceğiz Sayın Hocam.

D ve R nin eşit olduğu durumda W kolonunda (eşitliğin karşısında) kaç tane "50" sayısı var
bulunan adeti G ye yazdıracağız.

Bu kez toplam aldırmıyoruz. Belirlediğimiz bir Veri cinsini saydırıyoruz.
 
Deneyiniz.

Kod:
Sub TEST()
    Dim X As Long, Son As Long
    
    Son = Cells(Rows.Count, 4).End(3).Row
    
    For X = 3 To Son
        Cells(X, 7) = WorksheetFunction.CountIfs(Range("R:R"), Cells(X, 4), Range("W:W"), "50")
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
İyi ki varsınız hocam,
Tekrar tekrar teşekkürler.
 
Geri
Üst