如何找到包含公式的单元格范围中的最后一行,其中公式的结果是实际值而不是空?
以简化的方式说,单元格范围 ("E1:E10")
包含一个公式,指的是单元格A1到A10,如下所示 =IF("A1"="","","A1")
. 但只有单元格A1到A6的值已填入,因此单元格E7到E10的公式结果将为空 .
试着这样做:
lastRow = ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row
结果lastRow的值为 10
. 我想要的是在这个例子中lastRow的值是 6
.
实际的代码比这更复杂,所以我不能只检查最后填充的A列的行,因为公式引用不同工作表上的单个单元格并动态添加 .
3 回答
我认为比
@D_Bester
提供的更优雅的方法是使用find()
选项而不循环遍历单元格范围:测试
Also, more shorter version of the code which was provided above is:
您希望在列中找到非空的最后一个单元格,而不是空字符串(“”) .
只需跟随LastRow,循环检查非空单元格 .
请注意,
Rows.count
未指定哪个工作表 . 这意味着它将使用活动表 . 当然ActiveSheet.Range()
也在活动表上 . 但是将Range
或Rows
与.Range
或.Rows
混合是不好的做法 . 它表示如果您更改ActiveSheet
但未更改未指定的引用,则可能会让您感到轻率 .这应该可以帮助您确定包含公式的最后一行(在Sheet1
Sheet1
的A
列中):SpecialCells
用于确定包含公式的所有单元格的范围 . 然后使用Split
解析此范围 . 使用Ubound
时,将检索最后一个单元格 . 结果再次被拆分以提取行号 .