17

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

我该如何计算x

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

4

6 回答 6

61
Sheet1.Range("myrange").Rows.Count
于 2009-08-05T14:35:11.070 回答
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

于 2008-09-22T12:21:54.810 回答
9

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

=COUNTIFS(A:A,"<>")

您可以将 <> 替换为任何值,以获取其中包含该值的行数。

=COUNTIFS(A:A,"2008")

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

于 2012-05-24T12:21:22.643 回答
5

您还可以使用:

Range( RangeName ).end(xlDown).row

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

于 2008-09-22T14:19:22.563 回答
3

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

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

于 2008-09-22T12:36:56.647 回答
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
于 2008-09-22T12:41:04.327 回答