简单的Excelfind并replace公式

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

我怎样才能把它们全部换成新的配方呢?

如果公式相同,则可以使用查找和replaceMatch entire cell contents检查Match entire cell contentsLook in: Formulas 。 select范围,进入查找和replace,进行input和“全部replace”。

在这里输入图像说明

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

以下function提供了必要的匹配和replacefunction。 它可以在一个子程序中使用,该子程序可以识别具有指定范围的公式的单元格,并使用公式作为函数的input。 对于与您正在查找的模式匹配的公式string,该函数将生成replace公式,然后将其写回工作表。

 Function RegexFormulaReplace(formula As String) Dim regex As New RegExp regex.Pattern = "=\(\(([AZ]+\d+)-([AZ]+\d+)\)/([AZ]+\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 

为了使该function正常工作,您需要添加对Microsoft VBScript正则expression式5.5库的引用。 从主function区的“ Developer选项卡中,selectVBA ,然后从主工具栏中select“ References ”。 向下滚动以查找对库的引用,并选中它旁边的框。

原来,解决scheme是切换到R1C1单元参考。 我的工作表是这样构build的,即每个公式都有相同的结构,只是不同的引用。 幸运的是,他们总是以同样的方式定位

 =((E9-E8)/E8) 

成为

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

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

成为

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

在R1C1参考中,每个公式都是相同的,所以查找和replace不需要通配符。 谢谢那些回答的人!

使用通过ctrl + h访问的查找和replace命令,确保您正在search单元格的function。 然后你可以通配符来适应公式的任何偏差。 *为#通配符,? 为charcter通配符,和〜? 或〜*search? 要么 *。

我通常处理的方式是使用第二块软件。 对于Windows,我使用Notepad ++,OS X使用Sublime Text 2。

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