我需要计算有数据的总行数。我希望能够在具有不同数量数据行的多张工作表上使用它。
我无法弄清楚将计算 A1-A100 或 A1-A300 中的行数的通用代码。
我正在尝试使用这样的东西。
i = ActiveWorkbook.Worksheets("Sheet1").Range("A2 , Range("A2").End(xlDown)).Rows.Count
如果你需要 VBA,你可以像这样快速地做一些事情:
Sub Test()
With ActiveSheet
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
MsgBox lastRow
End With
End Sub
这将打印包含数据的最后一行的编号。如果您将 MsgBox 用于其他目的,显然不需要在那里,但 lastRow 仍然会成为那个值。
假设您Sheet1
没有必要处于活动状态,您将需要使用您的改进代码:
i = ActiveWorkbook.Worksheets("Sheet1").Range("A2" , Worksheets("Sheet1").Range("A2").End(xlDown)).Rows.Count
查看完整的工作表参考以获取Range(arg1, arg2)
在这种情况下重要的第二个参数。
我在http://www.mrexcel.com/上找到了这个方法
这将计算名为“数据”的工作表 A 列中非空白单元格的数量
With Worksheets("Data")
Ndt =Application.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
debug.print Ndt
End With
结果将打印到即时窗口。如果 A 列有您不想计算的标题行(或多行),则需要减去 1(或更多)。
lastrow = Sheet1.Range("A#").End(xlDown).Row
这更容易确定行数。
当涉及到较大的行时,请确保声明正确的变量。
顺便说一句,“#”符号必须是您要开始行计数的数字。
你试过这个吗?:
countif(rangethatyouhave, not(""))
我认为您不需要打开代码编辑器,您可以在电子表格本身中进行。
我已经这样实现了:
Public Function LastRowWithData(ByVal strCol As String, ByVal intRow As Integer) As Long
Range(strCol & intRow).Select
LastRowWithData= ActiveSheet.Cells(ActiveSheet.Rows.Count, strCol).End(xlUp).Row
End Function
这对我有用。返回当 apivot
column
是filtered
并且我需要count
可见时 Excel 在底部状态行中显示的数字cells
。
Global Const DashBoardSheet = "DashBoard"
Global Const ProfileColRng = "$L:$L"
.
.
.
Sub MySub()
Dim myreccnt as long
.
.
.
myreccnt = GetFilteredPivotRowCount(DashBoardSheet, ProfileColRng)
.
.
.
End Sub
Function GetFilteredPivotRowCount(sheetname As String, cntrange As String) As long
Dim reccnt As Long
reccnt = Sheets(sheetname).Range(cntrange).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants).Count - 1
GetFilteredPivotRowCount = reccnt
End Function