VBA 计算从活动单元格到其以上单元格值的总和

mob*_*uya 1 excel vba

我是 VBA Noob 正在寻求帮助,我的 ActiveCell 当前位于单元格 A8 中,我想使用循环将单元格 A7 与 A1 的总和然后该值将出现在单元格 A8 中。另外,如果我将 ActiveCell 更改为 C8,我仍然会得到相同的程序。

录制宏给了我这个

Range("A1:A7,A8").Select
Range("A8").Activate
ActiveCell.FormulaR1C1 = "=SUM(R[-7]C:R[-1]C)"
Run Code Online (Sandbox Code Playgroud)

我想把它改成循环,这样 A1:A7 的值就会出现在我的 ActiveCell A8 上

Gar*_*ent 5

要将放置在活动单元格中,请使用循环尝试:

Sub SumAboveLoop()
    Dim r As Range, rAbove As Range
    Dim v As Variant
    Set r = ActiveCell
    Set rAbove = Range(r.Offset(-1, 0), Cells(1, r.Column))
    v = 0
    For Each rr In rAbove
        v = v + rr.Value
    Next rr
    r.Value = v
End Sub
Run Code Online (Sandbox Code Playgroud)

要在没有循环的情况下在 activecell 中放置一个,请尝试:

Sub SumAboveV()
    Dim r As Range, rAbove As Range
    Dim wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    Set r = ActiveCell
    Set rAbove = Range(r.Offset(-1, 0), Cells(1, r.Column))
    r.Value = wf.Sum(rAbove)
End Sub
Run Code Online (Sandbox Code Playgroud)

要在没有循环的情况下在活动单元格中放置公式,请尝试:

Sub SumAboveF()
    Dim r As Range, rAbove As Range
    Dim wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    Set r = ActiveCell
    Set rAbove = Range(r.Offset(-1, 0), Cells(1, r.Column))
    r.Formula = "=SUM(" & rAbove.Address & ")"
End Sub
Run Code Online (Sandbox Code Playgroud)