VBA加总可变长度的列

另一个VBA的问题(我最近火了)正如标题所说,我试图总结一个可以是可变长度的列,然后将这个总和放在F3单元格中,但是我正在运行一个“应用程序或对象定义的错误。

这是我的代码:

Dim last As Range, sum As Variant ActiveSheet.Range("M8").Select Set last = Selection.End(xlDown) With Worksheets("Data") sum = WorksheetFunction.sum(.Range("M8:M" & last)) End With Range("F:3") = sum 

 With Worksheets("Data") .Range("F3").Value = Application.Sum(.Range(.Range("M8"), .Range("M8").End(xlDown)) End With 

使用你的方法,最后需要是你分配行号的Long。

 Dim last As Long Dim sum As Long ActiveSheet.Range("M8").Select last = Selection.End(xlDown).Row With Worksheets("Data") sum = WorksheetFunction.sum(.Range("M8:M" & last)) End With Range("F3") = sum 

通过使用,你也可以更高效地做到这一点

 last = ActiveSheet.Range("M8").End(xlDown).Row 

而不使用select。

使用此function可以稳定地计算从单元格向下的非空单元格。

 ' Enumerate non-empty cells down the rows. Public Function CountRows(ByRef r As Range) As Long If IsEmpty(r) Then CountRows = 0 ElseIf IsEmpty(r.Offset(1, 0)) Then CountRows = 1 Else CountRows = r.Worksheet.Range(r, r.End(xlDown)).Rows.Count End If End Function 

有一个非VBA的方式。 在单元格F3键入以下内容:

 =SUM(OFFSET($M$8,0,0,COUNTA(M:M),1)) 

注意 – 这里假定列M的唯一内容是你想要求和的数字