2010-11-17 121 views
5

我有以下代碼Excel的VBA命名範圍行和

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 

雖然我知道錯了,我不知道如何得到它在DepRng.Cells(i, j)存儲整個KidsRng.Row[i]任何幫助的總和?

+0

你能在KidsRng的定義添加? – 2010-11-17 02:38:08

+0

對不起,我不追隨,你是什麼意思添加一個定義? – Panicos 2010-11-17 02:39:17

+0

似乎DepRng.Columns.Count應該是1 ...如果不是你重複相同的值 – 2010-11-17 02:41:04

回答

2

排序,感謝所有幫助烏拉圭回合

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

好! ...但我仍然不明白你的j索引是什麼... – 2010-11-17 03:10:42

+0

它的另一行我剛纔在那裏,但j將被其他行範圍填充。對不起,雖然感到困惑,並感謝您的幫助 – Panicos 2010-11-17 03:12:30

1

可能有比這更好的方法,但這是我的解決方案,它依賴於內部的Excel公式引擎,但它可能已經足夠用於您正在做的事情......它決定了KidsRng的完整地址。行(i),並將其輸入到= SUM()公式字符串中,並通過Application.Evaluate進行評估。

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 

更新它的工作,如果kidsrng在更新爲使用Application.Evaluate

3

下面的代碼工作確定不同的紙張/書 存在。在執行宏B2:

也許你應該把它與你比較:

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 

只需填寫範圍C1:F2用數字和每行總計將出現在B1。