3 回答
TA贡献1877条经验 获得超1个赞
我喜欢这样:
ActiveSheet.UsedRange.Rows.Count
列数也可以这样做。对我来说,永远工作。但是,如果您在另一列中有数据,那么上面的代码也会考虑它们,因为该代码正在查找工作表中的所有单元格范围。
TA贡献1796条经验 获得超4个赞
最安全的选择是
Lastrow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Lastcol = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
不要使用UsedRange或SpecialCells(xlLastCell)或End(xlUp)。如果您以前删除了一些行,所有这些方法可能会导致错误的结果。Excel仍会计算这些不可见的单元格。
如果您删除单元格,保存工作簿,关闭然后重新打开,这些方法将再次起作用。
TA贡献1893条经验 获得超10个赞
这将独立于Excel版本(2003、2007、2010)运行。前一张纸有65536行,而后两张纸则有大约一百万行。Sheet1.Rows.Count根据版本返回此数字。
numofrows = Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp).Row
或同等但较短
numofrows = Sheet1.Cells(Sheet1.Rows.Count,1).End(xlUp)
这将从列A的底部向上搜索第一个非空单元格,并获取其行号。
如果您在其他列中有更深的数据,这也可以使用。因此,例如,如果您获取示例数据并在单元格FY4763中写了一些内容,则上面的内容仍将正确返回9(而不是4763,涉及该UsedRange属性的任何方法均会错误地返回)。
请注意,实际上,如果要使用单元格引用,则应使用以下内容。您不必先获取行号,然后构建单元格引用。
Set rngLastCell = Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp)
请注意,此方法在某些情况下会失败:
最后一行包含数据
最后一行被隐藏或过滤掉
因此,请注意,如果您打算将1,048,576行用于这些操作!
- 3 回答
- 0 关注
- 1697 浏览
添加回答
举报