我希望能够修改现有的公式并批量添加新函数。例如,我最初编写了一个计算
=Sheet1!D38-Sheet1!E38
并想添加一个,=IFERROR
使其看起来像这样:
=IFERROR(Sheet1!D38-Sheet1!E38, 0%)
当您有一两个时,手动完成相对容易,但我有一整篇包含公式的文档需要修改。
有没有一种简单的方法可以将新函数添加到现有公式中,而不用逐一检查所有公式?
给出的例子是随机的;我可能必须用更长更复杂的公式来做,比如=COUNTIFS
这快的我之前尝试过的修复包括:
=
查找公式开头的所有内容并将其替换为#
- 这会将公式转换为纯文本- 将新公式的第二部分(即最后出现的部分)复制并粘贴到每个单元格中。在本例中,公式为
, 0%)
#
用替换=IFERROR(
得到公式,并得到我想要的附加信息
但这不是一个非常有效的方法。
答案1
您可以通过 2 个步骤进行替换,无需手动编辑:
1- 搜索并替换=
(=IFERROR(
这会产生大量错误)
2- 搜索并替换行尾,0%)
输入以下 2 个按键作为行尾:
Control-M
Control-J
请注意,您在输入时不会看到任何字符,但它可以起作用。
答案2
我通常使用正则表达式插件比内置搜索/替换更灵活地处理文本。
它提供了查找/替换以及带有正则表达式的工作表功能。
在您的示例中,您需要
- 寻找:
=(.*)
- 替换为:
=iferror($1,0%)
请注意,此插件不具备仅在选择中替换的功能,因此您需要小心编写足够具体的外观表达。
答案3
假设我们有一组需要批量编辑的单元格:
Sub FixFormula()
'
' hi-light the cells you wish to process
'
Dim r As Range, rngF As Range, s As String
Set rngF = Selection.Cells.SpecialCells(xlCellTypeFormulas)
For Each r In rngF
s = "(" & Mid(r.Formula, 2) & ")"
r.Formula = "=IFERROR(" & s & ","""")"
Next r
End Sub
并且所有公式都将转换为:
=A1/B1
到:
=IFERROR((A1/B1),"")