如何通过 UDF 将单元格公式替换为其自身的值?

如何通过 UDF 将单元格公式替换为其自身的值?

问题描述

我有一个自己编写的自定义公式,但计算答案需要一段时间,并且由于 Excel 会更新函数值(当您激活工作簿或重新打开工作簿等时),所以我无法让它重新运行该函数。

我尝试调用子进程来复制单元格并粘贴值(用公式结果替换公式),但它返回了=#VALUE!。可能与循环引用有关...

问题

有没有办法用用户定义公式中的值覆盖单元格中的公式?

答案1

无法从 UDF 中覆盖任何单元格,它只能返回一个值。

您可以使用 Worksheet_Change 函数来解决这个问题......

在表格中:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("A1"), Target) Is Nothing Then
    'do nothing - not worried about anything not in A1
Else
    Range("A1").Value = Range("A1").Value
End If
End Sub

无论您在 A1 中输入什么公式,在将此代码放入的工作表中,它都将转换为值,并且公式将被删除。

答案2

  1. 选择单元格
  2. 右键单击 > 复制(或 [CTRL]+[c])
  3. 右键单击 > 选择性粘贴 > 粘贴值

这应该用结果数字/值替换公式。

相关内容