如何删除公式并在表中保留值

时间:2019-03-26 12:24:31

标签: excel vba

我正在尝试删除表格单元格中的所有公式并保留其值。我尝试了几种方法,但没有一个起作用。

Sub test()
ActiveSheet.ListObjects("Tableau4").Range.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub 

此代码始终删除表的标题。 我也尝试过此代码:

Sub test()
For Each cell In ListObjects("Tableau4").Range
    cell.Value = cell.Value
Next cell
End Sub

它可以工作,但是很长一段时间才能执行。

3 个答案:

答案 0 :(得分:1)

您不必担心标题行。标题行中不允许包含公式。专注于DataBodyRange并使用直接值转移。

Sub test()
    with ListObjects("Tableau4").databodyRange
        .Value = .Value
    end with
End Sub

答案 1 :(得分:0)

您应该可以使用:

Sub test()
With ListObjects("Tableau4").DataBodyRange
    .Value2 = .Value2
End With
End Sub

答案 2 :(得分:-1)

尝试:

Sub MAKE_VALUES()
Range(ActiveSheet.ListObjects("Tableau4").Range.Address) = Range(ActiveSheet.ListObjects("Tableau4").Range.Address).Value
End Sub

请注意,这会将所有表转换为值,包括标题,并删除表的格式。

如果要保留表格式并仅将正文(表头除外)转换为值,请使用:

Sub MAKE_BODY_VALUES()
Range(ActiveSheet.ListObjects("Tableau4").DataBodyRange.Address) = Range(ActiveSheet.ListObjects("Tableau4").DataBodyRange.Address).Value
End Sub