【问题标题】:Find last row after pasting formulas to values将公式粘贴到值后查找最后一行
【发布时间】: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


【解决方案1】:

使用价值转移代替复制/粘贴值,例如

newRange.Value = oldRange.Value

这将有效地消除所有带有空白字符串的单元格。

【讨论】:

    猜你喜欢
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多