我是新来的,我希望使用Excel VBA返回工作表中最后使用过的单元格 .
我看了Error in finding last used cell in VBA)但是这并没有回答我遇到的两个问题:
-
.Cells.Find(...).Row
方法在我的代码中花费太长时间 . -
“最后使用过的单元格”的含义可能很奇怪......单元格可能是空白的 . 我想获取具有最后一个使用过的单元格的列,并将其与具有最后一个使用过的单元格的行配对 .
解释:假设工作表为空,除了 A1:C3
, D2
和 B4
中的数据 . (Exhibit 1)
我感兴趣的最后一个单元格是 D4
因为我希望工作表中的最后一个单元格包含工作表中的所有数据 .
既然我已经解释了我在寻找什么,那么任何人都可以提供任何建议
-
如何使cell.find运行得更快或
-
另一种在工作表中找到"last cell"的可靠方法?
谢谢!
3 回答
你试过这个吗?
输出示例:
已知UsedRange并不总是与实际使用的数据范围匹配 . 一些解决方法是使用
CurrentRegion
:如果数据不是从
A1
开始,也许这样:按行和列使用
Find
来标识此单元格 .虽然答案非常有效,但我会小心使用SpecialCells,CurrentRegion以及所有这些 .
尽管它们大部分时间都在工作,但根据我的经验,它们并非100%可靠 .
例如,如果数据恰好具有空列或行等,则CurrentRegion将不会获取所有数据 .
在我看来,最好的方法是使用 Headers 和数据 . 然后,您可以枚举所有标头并找到该列中最后使用的行 . 然后,您可以确定使用的最大行,现在可以定义数据范围 .
顺便说一句,如果你选择指定列中的最后一个单元格然后使用Range.End(xlUp),你可以快速确定没有循环的那一列的最后一行 .
希望有所帮助 .