Excel VBA:如何总结上面的每一行?

我试图写一个公式,它执行以下操作:将所有高于此行的行总和,直到第3行(第1行和第2行是标头)。 这段代码必须从E:AQ列开始,对我来说非常棘手的是最后一行的行每月都会变化。 这个月它是133行,下个月它可能是145.到目前为止,这是我的代码:

Sub Fsum() Dim Rng1 As Range Set ws1 = Worksheets("Actuals") Set Rng1 = ws1.Range("A" & ws1.Rows.Count).End(x1Up) .Range("Rng1:AQ").Formula = "=sum(???lines above???)" End Sub 

你可以看到我困惑的地方。 有人可以帮忙吗?

这是一个方法去做:

 Sub test() Dim lr As Long Dim ws As Worksheet Set ws = Worksheets("Actuals") With ws lr = .Cells(1, 5).EntireColumn.Find(what:="*", _ After:=.Cells(1, 5).EntireColumn.Cells(1), _ LookAt:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row Range(.Cells(lr + 1, 5), .Cells(lr + 1, 43)).Formula = "=Sum(E3:E" & lr & ")" End With End Sub 

这将find列E中最后一个使用的单元格(代码中的5),并将其设置为整个最后一行。 然后它会在AQ列(代码中为43)中build立一个总和公式。

每次运行代码时,都会find最后一行。 所以它应该是相当dynamic的。 如果每列都有不同的最后一行,也可以这样做,只需要使用一个循环,但我得到的印象是,最后一行将不同于报告,而不是列到列。

希望这可以帮助!

编辑*

以上是find最后一行的另一种方法,以防上述问题给您带来麻烦:

 Sub test() Dim lr As Long Dim ws As Worksheet Set ws = Worksheets("Actuals") With ws lr = ws.Range("E" & .Rows.Count).End(xlUp).Row Range(.Cells(lr + 1, 5), .Cells(lr + 1, 43)).Formula = "=Sum(E3:E" & lr & ")" End With End Sub 

你需要find#REF! 首先,这里有一些东西供你参考find细胞。

 Option Explicit Sub FindRef() Dim Rng As Range Dim RefRng As Range Set Rng = Range("A1:F100") ' Use your own range Set RefRng = Rng.Find(what:="#REF!", LookIn:=xlValues) MsgBox "Found the #REF! " & RefRng.Column & RefRng.Row End Sub