家伙嗨,
我一直在使用#1几个月,并且通常,我设法找到直到现在我所有的VBA挑战的解决方案:
我需要一些帮助来创建一个宏,这个宏在E列之间的列E上添加了所有值,并用“avg”字。结果应该显示在显示“Sum here”标签的单元格上。 “avg”和“sum here”这两个文本仅用于举例说明,“avg”可以替换为任何其他单词,“sum here”实际上应该是其上面值的聚合。
真正的挑战是,范围在E列的数量是可变的,所以我想找到一个宏,它能够应付在列E.范围内的“n”个
最后,列D上的值只是“总计在此”单元上的期望值的示例。
这是我曾尝试远:
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”结合起来......但我看不出如何合并它。
非常感谢你!
嗨Suances!请告诉我们你试过了什么? –
只需将总数设置为0,然后循环遍历每一行,并且(a)如果列C不是“平均”(或任何您使用的),则将列E的值添加到总数中,或者(b)如果C列是“avg”(或任何您使用的)将总数写入E列并将总数再次设置为0。 – YowE3K