存在数据的行数

时间:2013-08-06 19:21:45

标签: excel-vba range vba excel

我是学习VBA的新手,并且想知道是否有人可以帮助我使用我需要的代码来计算我在其中包含数据的总行数。我希望能够在具有不同数据行数量的多个工作表上使用它。

更具体地说,我无法弄清楚将计算行数的通用代码 A1 - A100或A1- A300。

现在我正在尝试使用这样的东西,但它不起作用。

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

请帮忙!

由于

7 个答案:

答案 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)

我在http://www.mrexcel.com/

上找到了这个方法

这将计算名为“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 columnfiltered并且我需要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