确定范围中的行数

时间:2008-09-22 12:15:04

标签: excel vba excel-vba

我知道列表开头的范围名称 - 1列宽和x行深。

如何计算x

列中的数据多于此列表。但是,此列表是连续的 - 在其上方或下方或旁边的任何单元格中都没有任何内容。

6 个答案:

答案 0 :(得分:56)

Sheet1.Range("myrange").Rows.Count

答案 1 :(得分:11)

Function ListRowCount(ByVal FirstCellName as String) as Long
    With thisworkbook.Names(FirstCellName).RefersToRange
        If isempty(.Offset(1,0).value) Then 
            ListRowCount = 1
        Else
            ListRowCount = .End(xlDown).row - .row + 1
        End If
    End With
End Function

但如果你确定列表中没有任何内容,那么只需thisworkbook.Names(FirstCellName).RefersToRange.CurrentRegion.rows.count

答案 2 :(得分:8)

为什么不使用Excel公式来确定行?例如,如果您要查找列A中包含数据的单元格数量,请使用以下命令:

= COUNTIFS(A:A, “<>” 中)

您可以替换<>使用任何值来获取有多少行具有该值。

= COUNTIFS(A:A, “2008”)

这也可以用于连续查找填充的单元格。

答案 3 :(得分:5)

您也可以使用:

Range( RangeName ).end(xlDown).row

从命名范围开始查找包含数据的最后一行。

答案 4 :(得分:3)

我相信你可能想要@GSerg给出的答案。还有一个名为rows的工作表函数,它将为您提供行数。

因此,如果您有一个名为Data的命名数据范围有7行,那么=ROWS(Data)将在该单元格中显示7。

答案 5 :(得分:1)

唯一的最后一行完美地运作了@GSerg。

另一个功能是我一直在努力的,但除非绝对必要,否则我不想使用UDF。

我一直在尝试使用excel和vba的组合并让它发挥作用 - 但与你的答案相比它很笨重。

strArea = Sheets("Oper St Report CC").Range("cc_rev").CurrentRegion.Address
cc_rev_rows = "=ROWS(" & strArea & ")"
Range("cc_rev_count").Formula = cc_rev_rows