2010-07-14 50 views
14

我刚开始与“规划” VBA在Excel中一些使自动化手动是烦人的东西... ...所以这将probebly听起来像一个总nooby的问题,虽然我对VBA对象不太熟悉等等。获取一列装满细胞的数量(VBA)

所以我quesstion: 有没有找出一个列的长度更优雅的方式?我的第一列是一个索引,其数量单调递增,并以不可预测的点结束。 现在我想知道,这个专栏有多少条。有没有更好的办法比迭代通过这一点,并注意一个空的单元格?

格尔茨, Poeschlorn

回答

12

一种方法是:(假设索引列始于A1)

MsgBox Range("A1").End(xlDown).Row 

这是从A1向下寻找第一个无人居住的细胞,并显示您的序行号。

您可以选择下一个空单元格:

Range("A1").End(xlDown).Offset(1, 0).Select 

如果你需要一个数据集(包括空格)结束,请尝试:范围( “A:A”)。SpecialCells(xlLastCell).Row

+0

这是更好地做到这一点像下面MrKowz说明。如果由于某种原因存在空行,您可能会错过很多数据。 – Jon49 2011-10-06 23:40:56

+0

在某些情况下,但是这个问题明确指出了它的填充单元格,并且由于非连续单元格造成的错误计数可能同样很糟糕 – 2011-10-07 08:05:12

3

您还可以使用

Cells.CurrentRegion 

给你表示对当前活动工作表数据的边界范围

Msdn在主题上表示

返回表示当前区域的 的Range对象。当前区域 是由空白行和空白列的任意组合 界定的范围。 只读。

然后你就可以通过

Cells.CurrentRegion.Columns.Count 

确定列数和列数通过

Cells.CurrentRegion.Rows.Count 
3

你也可以使用:

UsedRange.Rows.Count 
+0

这对我来说非常合适,谢谢。 – DavidGuaita 2015-06-02 08:05:02

15

如果你想找到最后一个特定列中填充的单元格,最好的方法是:

Range("A" & Rows.Count).End(xlUp).Row 

该代码使用在整列(65536 Excel 2003中,在以后的版本1048576)非常最后一个单元格,然后找到它上面的第一个人口稠密的小区。这有能力忽略数据中的“中断”并找到真正的最后一行。

2

找到最后填充柱使用以下命令:

lastColumn = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column