确定一个范围内的行数

我知道列表开始的范围名称 – 1列宽x深。

我如何计算x

列中的数据比列表中还多。 但是,这个列表是连续的 – 上面或者下面或者旁边的任何一个单元中都没有任何东西。

 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

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

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

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

您可以用任何值replace<>以获取有多less行具有该值。

= COUNTIFS(A:A, “2008”)

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

你也可以使用:

 Range( RangeName ).end(xlDown).row 

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

那最后一行完美地工作@GSerg。

另外一个function是我一直在做的,但是除非绝对必要,否则我不喜欢用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 

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

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