我有一个电子表格,我试图在E列中重复填充来自不同但相似点(每次迭代80个单元格)的特定数据的列K.
所以K2应该例如显示E25 + E35 + E42 + E56 + E63的总和。
然后K3应显示E105 + E185 + E122 + E136 + E143的总数。
我写了一个宏,它执行第一步(并且有效),如下所示:
Sub disctoptest()
Dim source As Range
Dim destination As Range
Dim total As Long
Set destination = Range("K2")
Set source = Range("E25")
total = WorksheetFunction.Sum( _
source.Value + _
source.Offset(10, 0).Value + _
source.Offset(17, 0).Value + _
source.Offset(31, 0).Value + _
source.Offset(38, 0).Value)
destination.Select
destination.Value = total
Set source = Nothing
Set destination = Nothing
End Sub
然后我插入一个循环来重复整个数据库的操作,但每当我运行添加的宏excel要么冻结或只是拒绝工作。这是我用来循环的代码:
Sub disctop()
Dim source As Range
Dim destination As Range
Dim total As Long
Set destination = Range("K2")
Set source = Range("E25")
Do until destination.offset(0, -1) = ""
destination.Select
total = WorksheetFunction.Sum( _
source.Value + _
source.Offset(10, 0).Value + _
source.Offset(17, 0).Value + _
source.Offset(31, 0).Value + _
source.Offset(38, 0).Value)
destination.Value = total
source = source.Offset(80, 0)
destination = destination.Offset(1, 0)
Loop
Range("A1").Activate
Set source = Nothing
Set destination = Nothing
End Sub
如果使用不同类型的循环可能更容易,我需要在K列中重复操作680次。
非常感谢任何提示和建议!
答案 0 :(得分:0)
您需要对范围变量使用SET
以使其更改为引用的单元格:
Set source = source.Offset(80, 0)
Set destination = destination.Offset(1, 0)
另外
destination.offset(0, -1) = ""
将永远不会返回true,因为即使所有五个引用都为空,SUM函数也将返回0。
因此,您需要测试其他内容,例如:Total = 0
或者您可以使用以下公式执行此操作:
=INDEX(E:E,25+((ROW(1:1)-1)*80)) +INDEX(E:E,35+((ROW(1:1)-1)*80)) +INDEX(E:E,42+((ROW(1:1)-1)*80)) + INDEX(E:E,56+((ROW(1:1)-1)*80)) +INDEX(E:E,63+((ROW(1:1)-1)*80))
放入K2并复制。