我正在尝试创建一个宏,它将从D2中获取所有值,直到有一个空单元格,然后向下移动两步并继续循环中的此过程。我制作的代码不断添加恒定数量的单元格并向下移动,但我希望该范围是动态的。有人可以帮我这个。
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
答案 0 :(得分:0)
假设a
是您开始使用的单元格,存储为范围,您需要以下内容
WorksheetFunction.Sum(a, a.End(xlDown))
End
是等效于ctrl
的代码和方向箭头。因此,我建议对此进行一些错误检查,以确保单元格不为空。
<强>更新强>
我的原始答案假设你想要在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
速度很慢,并且会根据所选择的意外事件导致出现奇怪的错误。