Home ยป excel ยป Excel – Find and replace multiple parts of formula simultaneously

Excel – Find and replace multiple parts of formula simultaneously

Posted by: admin April 23, 2020 Leave a comment

Questions:

First post, please be kind ๐Ÿ™‚

I am updating a dataset by repeating calculations from a prior year (2015) onto the most recent year’s data (2016). I have copied the old year’s formulas into new columns, and I only have to change a few parts of each formula.

Example

2015 formula: =COUNTIFS(Data15[title], Datasheet!$B$2,
Data15[variable2015], “variable”, Data15[variable22015], “<=100”)

2016 formula: =COUNTIFS(Data16[title], Datasheet!$B$2,
Data16[variable2016], “variable”, Data16[variable22016], “<=100”)

I only have to change two parts of the formula: Data15 -> Data16, 2015 -> 2016. There are hundreds of these formulas to update, and I could manually go in and update these small parts of the formula. It is much faster to Find and Replace parts of the formula for all the formulas at the same time. However – to my knowledge – Find and Replace only allows you to replace one thing at a time (i.e., either Data15 -> Data16 OR 2015 -> 2016). I have tried to replace one and then replace the other, but the formula breaks unless both of them are replaced together.

The question: In Excel, is there a way to find and replace multiple parts of a formula simultaneously? Essentially, I would like to replace both Data15 -> Data16 and 2015 -> 2016 in the same Find and Replace, for a batch of cells. Is that possible?

Thank you!

How to&Answers:

Here is a macro and instructions:

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

Macros are very easy to install and use:

  1. ALT-F11 brings up the VBE window
  2. ALT-I
    ALT-M opens a fresh module
  3. paste the stuff in and close the VBE window

If you save the workbook, the macro will be saved with it.
If you are using a version of Excel later then 2003, you must save
the file as .xlsm rather than .xlsx

To remove the macro:

  1. bring up the VBE window as above
  2. clear the code out
  3. close the VBE window

To use the macro from the Excel worksheet:

  1. ALT-F8
  2. Select the macro
  3. Touch RUN

To learn more about macros in general, see:

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

and

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

Macros must be enabled for this to work!

EDIT#1:

Discard the previous code and use this instead:

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

(we are only adding a single line of code)