如何将实际的Excel公式(而非结果)转换为文本字符串

6
我一直在寻找解决方案,但未能找到。

假设我在单元格A1中键入:=if(A2>1,1,0)

Excel会对其进行解释,并返回1或0。

然而,我想要的是将该公式文字转换为字符串:'=if(A2>1,1,0)'

如果您在Excel中按Ctrl+~,则可以看到所有公式。总之,我的目的是将所有这些公式都变成字符串。

(如果您关心的话,目的是将这些字符串与另一个工作簿进行比较,以确保我没有删除任何内容)

6个回答

12
您可以为此编写一个用户定义函数。
将此代码放入Module中(而不是工作表代码表、类或表单)。
Function GetFormula(rng As range, Optional asR1C1 As Boolean = False) As String
    If asR1C1 Then
        getFormula = rng.FormulaR1C1
    Else
        getFormula = rng.Formula
    End If
End Function

并在您的工作表中这样调用它

=GetFormula(A1)

如果您想将结果作为 R1C1 格式呈现

=GetFormula(A1,TRUE)

+1 使用R1C1是更好的选择,因为如果一行(或列)中的所有公式都相同,则只需要比较此范围内的一个单元格即可。 - brettdj

11

使用内置的Excel函数FORMULATEXT。


很好的答案,这是最简单的答案,没有任何外部宏。 - sunil
1
仅适用于Excel 2011及更高版本。 - Dave2e
FORMULATEXT在Excel 2003中不可用。 - ZEE

2
我希望做的就是将那个公式转换成字符串:'=if(A2>1,1,0)'。只需使用单元格的Formula属性,以下是代码示例:
Range("A1").Select
Dim strFormula As String
strFormula  = ActiveCell.Formula
MsgBox (strFormula)

1
您还可以使用查找和替换将等号替换为空格。这实际上是删除了等号,只保留公式的文本作为字符串。

0

只需按照以下步骤操作:

  1. 选择您想要转换为文本的范围(包含公式),或者您可以选择工作表上的所有范围。

  2. 使用查找和替换命令,按下 Control-F 键,然后将“=”替换为“^”,点击全部替换即可完成。

  3. 如果您想再次将其用作公式...... 只需使用查找和替换功能,然后将“^”替换为“=”, 看一下......所有以文本格式呈现的公式都已转换为公式......


-2
只需右键单击列标题(即A),然后选择“格式单元格”,在“数字”选项卡下选择“文本”。然后在每个单元格中按Enter,公式将显示而不是结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接