13

我需要计算有数据的总行数。我希望能够在具有不同数量数据行的多张工作表上使用它。

我无法弄清楚将计算 A1-A100 或 A1-A300 中的行数的通用代码。

我正在尝试使用这样的东西。

i = ActiveWorkbook.Worksheets("Sheet1").Range("A2 , Range("A2").End(xlDown)).Rows.Count
4

7 回答 7

18

如果你需要 VBA,你可以像这样快速地做一些事情:

Sub Test()
    With ActiveSheet
    lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    MsgBox lastRow
    End With
End Sub

这将打印包含数据的最后一行的编号。如果您将 MsgBox 用于其他目的,显然不需要在那里,但 lastRow 仍然会成为那个值。

于 2013-08-06T19:47:22.467 回答
8

假设您Sheet1没有必要处于活动状态,您将需要使用您的改进代码:

i = ActiveWorkbook.Worksheets("Sheet1").Range("A2" , Worksheets("Sheet1").Range("A2").End(xlDown)).Rows.Count

查看完整的工作表参考以获取Range(arg1, arg2)在这种情况下重要的第二个参数。

于 2013-08-06T19:42:03.367 回答
2

我在http://www.mrexcel.com/上找到了这个方法

这将计算名为“数据”的工作表 A 列中非空白单元格的数量

With Worksheets("Data")
  Ndt =Application.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
  debug.print Ndt
End With

结果将打印到即时窗口。如果 A 列有您不想计算的标题行(或多行),则需要减去 1(或更多)。

于 2017-01-08T23:16:25.230 回答
2
lastrow = Sheet1.Range("A#").End(xlDown).Row

这更容易确定行数。
当涉及到较大的行时,请确保声明正确的变量。
顺便说一句,“#”符号必须是您要开始行计数的数字。

于 2019-08-27T06:09:32.110 回答
0

你试过这个吗?:

    countif(rangethatyouhave, not(""))

我认为您不需要打开代码编辑器,您可以在电子表格本身中进行。

于 2013-08-06T19:25:16.220 回答
0

我已经这样实现了:

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
于 2020-09-24T10:05:50.827 回答
-1

这对我有用。返回当 apivot columnfiltered并且我需要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
于 2016-07-10T15:34:04.423 回答