我是学习VBA的新手,并且想知道是否有人可以帮助我使用我需要的代码来计算我在其中包含数据的总行数。我希望能够在具有不同数据行数量的多个工作表上使用它。
更具体地说,我无法弄清楚将计算行数的通用代码 A1 - A100或A1- A300。
现在我正在尝试使用这样的东西,但它不起作用。
i = ActiveWorkbook.Worksheets("Sheet1").Range("A2 , Range("A2").End(xlDown)).Rows.Count
请帮忙!
由于
答案 0 :(得分:13)
如果您需要VBA,可以像这样快速做一些事情:
Sub Test()
With ActiveSheet
lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
MsgBox lastRow
End With
End Sub
这将打印包含数据的最后一行的编号。如果您将其用于其他目的,显然不需要MsgBox,但是lastRow仍将成为该值。
答案 1 :(得分:4)
假设你的Sheet1
没有必要激活,你需要使用这个改进的代码:
i = ActiveWorkbook.Worksheets("Sheet1").Range("A2" , Worksheets("Sheet1").Range("A2").End(xlDown)).Rows.Count
查看Range(arg1, arg2)
的第二个参数的完整工作表参考,这在这种情况下很重要。
答案 2 :(得分:1)
这将计算名为“Data”
的工作表A列中的非空单元格数With Worksheets("Data")
Ndt =Application.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
debug.print Ndt
End With
结果将打印到即时窗口。如果A列有一个您不想计算的标题行(或多行),则需要减去1(或更多)。
答案 3 :(得分:0)
lastrow = Sheet1.Range("A#").End(xlDown).Row
这更容易确定行数。
确保涉及较大的行时声明正确的变量。
顺便说一句,“#”符号必须是您要开始行计数的数字。
答案 4 :(得分: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
答案 5 :(得分:-1)
你试过这个吗?:
countif(rangethatyouhave, not(""))
我认为你不需要打开代码编辑器,你可以在电子表格本身中进行。
答案 6 :(得分:-1)
这对我有用。当pivot
column
为filtered
并且我需要count
可见cells
时,返回Excel在底部状态行中显示的数字。
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