【问题标题】:Excel - Find and replace multiple parts of formula simultaneouslyExcel - 同时查找和替换公式的多个部分
【发布时间】:2017-10-14 19:23:44
【问题描述】:

第一次发帖,请多多关照:)

我正在通过将前一年(2015 年)的计算重复到最近一年的数据(2016 年)来更新数据集。我已将旧年的公式复制到新列中,我只需更改每个公式的几个部分。

例子

2015 公式:=COUNTIFS(Data15[title], Datasheet!$B$2, Data15[variable2015], "variable", Data15[variable22015], "

2016 年公式:=COUNTIFS(Data16[title], Datasheet!$B$2, Data16[variable2016], "variable", Data16[variable22016], "

我只需要更改公式的两个部分:Data15 -> Data16, 2015 -> 2016。这些公式有数百个要更新,我可以手动进入并更新公式的这些小部分。同时查找和替换所有公式的部分公式要快得多。但是 - 据我所知 - 查找和替换只允许您一次替换一件事(即 Data15 -> Data16 OR 2015 -> 2016)。我试图替换一个然后替换另一个,但是除非将它们两个一起替换,否则公式会中断。

问题:在 Excel 中,有没有办法同时查找和替换公式的多个部分? 本质上,我想同时替换 Data15 -> Data16 和 2015 -> 2016对于一批单元格,相同的查找和替换。那可能吗?

谢谢!

【问题讨论】:

  • 能否禁用计算,然后连续进行两次查找和替换?
  • 我已将计算选项更改为手动 (extendoffice.com/documents/excel/…),但一次替换一个仍然不起作用
  • 你能用一个简单的宏吗??
  • @Gary'sStudent 可能,但我对宏没有太多经验。你有我可以模仿的例子吗?
  • 所以只需将所有 15 替换为 16

标签: excel


【解决方案1】:

这是一个宏和说明:

Sub FixFormulas()
    Dim r As Range, rng As Range
    Dim s As String

    Set rng = Cells.SpecialCells(xlCellTypeFormulas)
    For Each r In rng
        r.Value = "'" & r.Formula
        r.Replace what:="2015", Replacement:="2016"
        r.Replace what:="Data15", Replacement:="Data16"
        r.Formula = r.Value
    Next r

End Sub

宏非常易于安装和使用:

  1. ALT-F11 调出 VBE 窗口
  2. ALT-I ALT-M 打开一个新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,宏将与它一起保存。 如果您使用的是 2003 年以后的 Excel 版本,则必须保存 文件为 .xlsm 而不是 .xlsx

要删除宏:

  1. 如上所示打开 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要使用 Excel 工作表中的宏:

  1. ALT-F8
  2. 选择宏
  3. 触摸运行

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

必须启用宏才能正常工作!

编辑#1:

放弃之前的代码,改用这个:

Sub FixFormulas2()
    Dim r As Range, rng As Range
    Dim s As String

    Set rng = Cells.SpecialCells(xlCellTypeFormulas)
    Set rng = Intersect(rng, Range("Z4:AA120"))
    For Each r In rng
        r.Value = "'" & r.Formula
        r.Replace what:="2015", Replacement:="2016"
        r.Replace what:="Data15", Replacement:="Data16"
        r.Formula = r.Value
    Next r

End Sub

(我们只添加了一行代码)

【讨论】:

  • 使用临时变量替换公式可能会更好
  • @Slai 这样会更快,但我想让代码更直观。
  • @gary 的学生 - 谢谢你!一个快速的问题 - 有没有办法将其仅应用于特定单元格,而不是整个选项卡?
  • @Anthony...当然...哪些列或行。 ?
  • @Gary'sStudent Z4:AA120 - 非常感谢!我很高兴现在能详细了解宏
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 2017-11-22
  • 1970-01-01
  • 2023-02-13
  • 1970-01-01
  • 2015-01-10
  • 2017-09-04
相关资源
最近更新 更多