2010-11-17 22 views
5

Ben, ben DepRng.Cells(i, j) bütün KidsRng.Row[i] Herhangi bir yardım toplamını depolamak için nasıl hiçbir fikri aşağıdaki koduExcel VBA Adlandırılmış aralık satır toplamı

For i = 1 To DepRng.Rows.Count 
    For j = 1 To DepRng.Columns.Count 
     DepRng.Cells(i, j) = Application.Sum(KidsRng.Row(i)) //Does not work 
    Next j 
Next i 

var mı?

+0

Eğer KidsRng bir tanımı ekleyebilir miyim için, teşekkürler sıralama? –

+0

özür dilerim, bir tanım ekleyerek ne demek istiyorsun? – Panicos

+0

Yorumunuz için aynı değeri tekrar –

cevap

2

tüm ur yardım

DepRng.Cells(i, j) = Application.Sum(KidsRng.Rows(i)) //just needed to add the "s" in rows 
+0

İyi! ... ama hala j indeksinin ne olduğunu anlamıyorum ... –

+0

onun için başka bir satır için şimdi vardı, ama j diğer satır aralıkları ile doldurulacak. Yine de karışıklık için özür dilerim, yardım için teşekkürler – Panicos

1

Bundan daha iyi bir yol olabilir, ancak bu, dahili Excel formül motoruna bağlı olan, ancak yaptığınız şey için yeterince yeterli olan çözümümdür ... Bu, KidsRng'nin tam adresini belirler. Satır (i) ve bunu bir SUM() formülü dizesine besler ve Application.Evaluate tarafından değerlendirilir. kidsrng Application.Evaluate

3

Aşağıdaki kod inşaat ok kullanmak için güncellendi farklı bir levha/kitapta varolan eğer

For i = 1 To DepRng.Rows.Count 
    For j = 1 To DepRng.Columns.Count 

     DepRng.Cells(i, j).Value = Application.Evaluate("=SUM(" & KidsRng.Row(i).Address(True, True, xlA1, True) & ")") 

    Next j 
Next i 

çalışmak için onu güncelledik.

Belki senin ile karşılaştırmak gerekir:

Sub a() 

Dim DepRng As Range 
Dim kidsrng As Range 
Set DepRng = Range("B1:B2") 
Set kidsrng = Range("C1:F2") 

For i = 1 To DepRng.Rows.Count 
     DepRng.Cells(i, 1) = Application.Sum(kidsrng.Rows(i)) 
Next i 

End Sub 

Sadece aralık C1 doldurun: numaraları ve satır başına toplamları ile F2 B1 görünecektir: B2 makroyu yürütülmesi sırasında.