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的唯一内容是你想要求和的数字