简单的excel查找和替换公式

时间:2013-07-25 02:16:25

标签: excel replace

我在工作表上的所有地方都有许多单元格,看起来像=((E9-E8)/E8)。我想使用前两个值来进入这个新公式(EXP((LN(E9/E8)/14.32))-1)

如何一举将它们全部改为新配方?

5 个答案:

答案 0 :(得分:18)

如果公式相同,您可以使用已查看和替换Match entire cell contentsLook in: Formulas。选择范围,进入查找和替换,输入和“全部替换”。

enter image description here

或者你的意思是说有几个具有相同形式的公式,但不同的单元格引用?如果是这样,那么一种方法是正则表达式匹配和替换。正则表达式不会内置到Excel(或VBA)中,但可以通过Microsoft的VBScript正则表达式库访问。

以下功能提供必要的匹配和替换功能。它可以在子程序中使用,该子程序将识别具有指定范围内的公式的单元格,并使用公式作为函数的输入。对于与您要查找的模式匹配的公式字符串,该函数将生成替换公式,然后可以将其写回工作表。

Function RegexFormulaReplace(formula As String)
    Dim regex As New RegExp
    regex.Pattern = "=\(\(([A-Z]+\d+)-([A-Z]+\d+)\)/([A-Z]+\d+)\)"
'   Test if a match is found
    If regex.Test(formula) = True Then
        RegexFormulaReplace = regex.Replace(formula, "=(EXP((LN($1/$2)/14.32))-1")
    Else
        RegexFormulaReplace = CVErr(xlErrValue)
    End If
    Set regex = Nothing
End Function

为了使该功能起作用,您需要添加对Microsoft VBScript Regular Expressions 5.5库的引用。在主功能区的Developer标签中,选择VBA,然后从主工具栏中选择References。向下滚动以查找对库的引用,并选中它旁边的框。

答案 1 :(得分:6)

事实证明,解决方案是切换到R1C1 Cell Reference。我的工作表的结构使得每个公式都具有相同的结构,只是不同的引用。幸运的是,他们总是以同样的方式定位

=((E9-E8)/E8) 

成了

=((R[-1]C-R[-2]C)/R[-2]C)

(EXP((LN(E9/E8)/14.32))-1)

成了

=(EXP((LN(R[-1]C/R[-2]C)/14.32))-1)

在R1C1参考中,每个公式都相同,因此查找和替换不需要通配符。谢谢那些回答的人!

答案 2 :(得分:3)

我通常使用第二个软件来处理这个问题。 对于Windows,我使用Notepad ++,对于OS X,我使用Sublime Text 2。

  1. 在Excel中,点击Control +〜(OS X)
  2. Excel会将所有值转换为其公式版本
  3. CMD + A(我通常会这样做两次)来选择整张表
  4. 复制所有内容并将其粘贴到Notepad ++ / Sublime Text 2
  5. 在此处查找/替换您的公式内容
  6. 复制内容并粘贴回Excel,确认有关单元格大小差异的任何问题
  7. 控制+〜切换回值模式

答案 3 :(得分:1)

使用通过ctrl + h可访问的查找和替换命令,确保您正在搜索单元格的功能。然后,您可以使用通配符来适应公式的任何偏差。 *#通配符,?对于charcter通配符,和〜?或者〜*来搜索?或*。

答案 4 :(得分:-1)

您还可以在Excel中单击“公式”选项卡,然后选择“显示公式”,然后使用常规的“查找”和“替换”功能。这不会影响您公式的其余部分。