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是缓慢的,有被选择的倾向,导致基于意想不到的事情奇怪的错误。

+0

对不起,让我更准确。我正在尝试创建一个宏,它将从D2中获取所有值,直到出现空单元格,然后向下移动两个步骤,并在循环中继续此过程。我所做的代码不断添加恒定数量的单元格并向下移动,但我希望该范围是动态的。我编辑了我的问题,以便将我的代码也放入其中。你可以请看看它。 – 2014-09-05 16:53:52

+0

嗨Degustaf。感谢您的帮助。我试过你给我的代码,但它只是计算第一组。我添加了一个D列的小样本。现在,代码只能将值添加到70.如果可以编写代码以添加所有集合,可以再试一次。谢谢。 – 2014-09-06 06:16:50