VBA代码总结值在一个不恒定的范围
问题描述:
我想做一个宏,它将从D2的一些所有值,直到有一个空单元格,然后移动两个步骤,并继续此过程在一个循环中。我所做的代码不断添加恒定数量的单元格并向下移动,但我希望该范围是动态的。有人可以帮我解决这个问题。VBA代码总结值在一个不恒定的范围
Sub Macro4()
'
' Macro4 Macro
'
'
Range("D2").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-15]C:R[-1]C)"
ActiveCell.Offset(2, 0).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-8]C:R[-1]C)"
Do
ActiveCell.Offset(2, 0).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-8]C:R[-1]C)"
Loop Until IsEmpty(ActiveCell.Offset(2, 0))
End Sub
80
8
10
40
8
16
30
16
30
26
34
26
46
10
70
24
5
36
24
24
48
6
6
12
10
6
18
36
48
54
24
答
假设a
是您正在开始与小区,存储为一个范围,要下面
WorksheetFunction.Sum(a, a.End(xlDown))
End
是码等效的ctrl
的和的方向箭头。因此,我建议在这个周围进行一些错误检查,以确保单元格不是空的。
UPDATE
我原来的答复假设你justed想在VBA计算值。根据所添加的代码,我会用以下内容:
Sub Macro4()
Dim cell As Range
Dim offset_rows As Long
Set cell = Range("D2")
Do While Not IsEmpty(cell.Offset(1, 0))
offset_rows = Range(cell, cell.End(xlDown)).Rows.Count
Set cell = cell.End(xlDown).Offset(1, 0)
cell.FormulaR1C1 = "=SUM(R[-" & offset_rows & "]C:R[-1]C)"
Loop
End Sub
注意,我清理了记录代码selection
是缓慢的,有被选择的倾向,导致基于意想不到的事情奇怪的错误。
对不起,让我更准确。我正在尝试创建一个宏,它将从D2中获取所有值,直到出现空单元格,然后向下移动两个步骤,并在循环中继续此过程。我所做的代码不断添加恒定数量的单元格并向下移动,但我希望该范围是动态的。我编辑了我的问题,以便将我的代码也放入其中。你可以请看看它。 – 2014-09-05 16:53:52
嗨Degustaf。感谢您的帮助。我试过你给我的代码,但它只是计算第一组。我添加了一个D列的小样本。现在,代码只能将值添加到70.如果可以编写代码以添加所有集合,可以再试一次。谢谢。 – 2014-09-06 06:16:50