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

时间:2017-01-25 19:26:58

标签: excel vba excel-vba

我有一张xlsx电子表格,其中包含一堆包含数据或公式的工作表。让我们说sheet1有数据,sheet2有公式引用sheet1中的数据。当使用新数据(来自SAS程序)更新sheet1时,我尝试执行以下操作:

  1. 将sheet2转换为仅值(即删除后面的公式)
  2. 删除sheet1
  3. 保存文件
  4. 我需要通过电子表格自动执行此操作,并在有更新时让宏/程序自动运行。

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

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

    我真的不熟悉VBA。

3 个答案:

答案 0 :(得分:1)

您只在Sheet2中获得了值。

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

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

然后到.SaveAs(提示输入文件名)

ThisWorkbook.SaveAs Filename:=fName

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

为什么不只是草拟两张纸,然后在问题中得到答案呢?

Use formula to update cells, but as values

尝试使用

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

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

我认为,如果将其放置在提取更新的代码的末尾,或者在更新完成后单独运行,则可以达到最终目的。您的目标似乎不是要拥有两个不同的电子表格。只是一个电子表格,仅是值。