【发布时间】:2020-06-16 06:29:09
【问题描述】:
我的情况的一个简单版本是我有一个包含三张工作表的工作簿。 Sheet1 包含数据。 Sheet2 包含指向 Sheet1 的链接,例如:“=if(Sheet1!A1="","",Sheet1!A1)"。这样,如果 Sheet1 中的单元格为空,我就看不到 0。
当我通过选择粘贴为值的所有内容(我使用宏来执行此操作,但结果相同)将 Sheet2 更改为值时,一切看起来都很完美,但是当我尝试使用数据查找最后一行时,它仍然找到最后一行包含粘贴值之前的公式的行。
我使用下面的 vba 脚本来查找数据的最后一行。
Sub Range_End_Method_1()
'Finds the last non-blank cell in a single row or column
Dim lRow As Long
Dim lCol As Long
'Find the last non-blank cell in column A(1)
lRow = Cells(Rows.Count, 1).End(xlUp).Row
'Find the last non-blank cell in row 1
lCol = Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox "Last Row: " & lRow & vbNewLine & _
"Last Column: " & lCol
End Sub
从这里下载文件:https://www.dropbox.com/s/nhgrmt942ahiu50/DEMO.xlsm?dl=0
Sheet2 仍包含公式,Sheet3 是 Sheet2 的副本,其中公式被粘贴为值。
知道如何找到实际包含数据的最后一行吗?
【问题讨论】:
-
您是否考虑过在插入数据之前清除Sheet2中公式的单元格?
-
通过数据连接而不是链接插入数据可能是一种解决方案,但我现在很难更改,因为 Excel 文件实际上从 +20 工作簿获取数据,我只需要最后一行定义可打印区域。
-
而不是
LookIn:=xlFormulas你会使用LookIn:=xlValues
标签: excel vba excel-formula