数据更新后,保留单元格值而不是公式并删除数据表



我有一个xlsx电子表格,里面有一堆包含数据或公式的工作表。 假设工作表 1 有数据,工作表 2 有引用工作表 1 中数据的公式。 当工作表1使用新数据(来自SAS程序)更新时,我正在尝试执行以下操作:

  1. 仅将 sheet2 转换为值(即删除后面的公式)
  2. 删除工作表1
  3. 保存文件

我需要通过电子表格自动执行此操作,并在更新时自动运行宏/程序。

到目前为止,这是我得到的(粘贴值而不是公式):

Sub Sample()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("tab2")
    ws.UsedRange.Value = ws.UsedRange.Value
End Sub

我真的不熟悉 VBA。

您只能在 Sheet2 中获得值。

您想删除 Sheet1(应该有一个弹出窗口来检查您是否真的要删除工作表......我们将在您之前将其关闭,然后在之后重新打开):

Application.DisplayAlerts = False 
Sheets("Sheet1").Delete
Application.DisplayAlerts = True

然后到 .另存为(提示输入要另存为的文件名)

ThisWorkbook.SaveAs Filename:=fName

试试这个:

Sub Sample()
        Dim ws As Worksheet
        Set ws = ThisWorkbook.Sheets("tab2")
        ws.UsedRange.Value = ws.UsedRange.Value
        Application.DisplayAlerts = False
            Sheets("sheet1").Delete
        Application.DisplayAlerts = True
        ActiveWorkbook.Save
    End Sub

为什么不直接提出两张纸的想法,然后推断我在问题中得到的答案。

使用公式更新单元格,但作为值

尝试使用

Range("A1:P10").Select
With Selection
    .Value = .Value
End With

这会将所选范围内的每个公式转换为其值。 只是不要尝试使用Cells.Select. 当我尝试它时,我遇到了与内存相关的错误。 如果您的电子表格大小不一,请先计算底部单元格。

Sub Convert()
    ' Table Bottom
    Dim TB As Long
    ' Set Table Bottom Variable
    TB = Range("A65000").End(xlUp).Row 'finds bottom row
    ' Change Formulas in Range to Values
    Range("A1:P" & TB).Select
    With Selection
        .Value = .Value
    End With
End Sub

有时我必须根据电子表格更改用于查找底行的列,但这是一般的想法。

我认为如果您将其放在拉取更新的代码的末尾,或者如果您在更新完成后单独运行它,这将完成您最终尝试做的事情。 您的目标似乎不是拥有两个不同的电子表格。 只有一个只有值的电子表格。

最新更新