【发布时间】:2016-08-23 08:52:51
【问题描述】:
我需要一些帮助来创建一个宏,该宏将 E 列上的所有值添加到带有“avg”字样的行之间。结果应显示在显示“Sum here”标签的单元格上。文本“avg”和“sum here”都只是为了说明示例,“avg”可以替换为任何其他单词,“sum here”实际上应该是它上面的值的聚合。
真正的挑战是 E 列上的范围数是可变的,所以我想找到一个能够处理 E 列上“n”个范围的宏。
最后,D 列的值只是“sum here”单元格的期望值的示例。
这是我迄今为止尝试过的:
Sub Macro1()
'
' Macro1 Macro
'
Dim sumhere As Range
Dim startingpoint As Range
Dim endingpoint As Range
'
Range("C17").Select
Selection.End(xlDown).Select
If ActiveCell = "avg" Then
ActiveCell.Offset(rowoffset:=0, columnoffset:=2).Select
Set sumhere = ActiveCell
Set startingpoint = ActiveCell.Offset(rowoffset:=-1, columnoffset:=0)
Selection.End(xlUp).Select
If (ActiveCell.Value) = "Sum here" Then
Set endingpoint = ActiveCell.Offset(rowoffset:=1, columnoffset:=0)
sumhere.Formula = "=sum(range(startingpoint:endingpoint)"
Else
Selection.End(xlUp).Select
If (ActiveCell.Value) = "Sum here" Then
Set endingpoint = ActiveCell.Offset(rowoffset:=1, columnoffset:=0)
sumhere.Formula = "=Sum(Range(startingpoint.adress:endingpoint.adress))"
Else: End If
End If
End If
End Sub
此外,如您所见,我不知道如何使用变量定义范围。我最初的想法是将此代码与某种“do while”或/和“for i= 1 to x”和“next i”结合起来。但我看不到如何组合它。
【问题讨论】:
-
您好!请向我们展示您的尝试?
-
首先将总数设置为 0,然后循环遍历每一行,或者 (a) 如果 C 列不是“avg”(或您使用的任何值),然后将 E 列的值添加到总计,或 (b) 如果 C 列是“平均”(或您使用的任何内容),则将总计写入 E 列并将总计再次设置为 0。