2010-11-17 117 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。