另一个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
答案 0 :(得分:2)
With Worksheets("Data")
.Range("F3").Value = Application.Sum(.Range(.Range("M8"), .Range("M8").End(xlDown))
End With
答案 1 :(得分:0)
使用您的方法,last需要为您指定行号的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。
答案 2 :(得分:0)
使用此功能可以稳定地计算从单元格向下的非空单元格。
' 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
答案 3 :(得分:0)
有一种非VBA方式。在单元格F3
中输入以下内容:
=SUM(OFFSET($M$8,0,0,COUNTA(M:M),1))
注意 - 这假设M列的唯一内容是您要求和的数字