Summary

To find and replace multiple values with a formula, you can nest multiple SUBSTITUTE functions together, and feed in find/replace pairs from another table using the INDEX function. In the example shown, we are performing 4 separate find and replace operations. The formula in G5 is:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B5,INDEX(find,1),INDEX(replace,1)),INDEX(find,2),INDEX(replace,2)),INDEX(find,3),INDEX(replace,3)),INDEX(find,4),INDEX(replace,4))

where "find" is the named range E5:E8, and "replace" is the named range F5:F8. See below for info on how to make this formula easier to read.

Generic formula

=SUBSTITUTE(SUBSTITUTE(B5,INDEX(find,1),INDEX(replace,1)),INDEX(find,2),INDEX(replace,2))

Explanation 

There is no built-in function to perform a series of find and replace operations in Excel, but this article explains how you can cobble together a formula that does the same thing. The text to look for and replace with is stored directly on the worksheet in a table, and retrieved with the INDEX function. This makes the solution "dynamic" – if any of these values are changed, results update immediately. Of course, there is no requirement to use INDEX; you can hard-code values into the formula if you prefer.

At the core, the formula uses the SUBSTITUTE function to perform each substitution, with this basic pattern:

=SUBSTITUTE(text,find,replace)

"Text" is the incoming value, "find" is the text to look for, and "replace" is the text to replace with. The text to look for and replace with is stored in the table to the right, in the range E5:F8, one pair per row. The values on the left are in the named range"find" and the values on the right are in the named range "replace". The INDEX function is used to retrieve both the "find" text and the "replace" text like this:

INDEX(find,1) // first "find" value
INDEX(replace,1) // first "replace" value

So, to run the first substitution (look for "red", and replace it with "pink") we use:

=SUBSTITUTE(B5,INDEX(find,1),INDEX(replace,1))

In total, we run four separate substitutions, and each subsequent SUBSTITUTE begins with the result from the previous SUBSTITUTE:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B5,INDEX(find,1),INDEX(replace,1)),INDEX(find,2),INDEX(replace,2)),INDEX(find,3),INDEX(replace,3)),INDEX(find,4),INDEX(replace,4))

Line breaks for readability

You'll notice this kind of nested formula is quite difficult to read. By adding line breaks, we can make the formula much easier to read and maintain:

=
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
B5,
INDEX(find,1),INDEX(replace,1)),
INDEX(find,2),INDEX(replace,2)),
INDEX(find,3),INDEX(replace,3)),
INDEX(find,4),INDEX(replace,4))

The formula bar in Excel ignores extra white space and line breaks, so the above formula can be pasted in directly:

Line breaks added in formula bar for readability and maintenance

By the way, there is a keyboard shortcut for expanding and collapsing the formula bar.

More substitutions

More rows can be added to the table to handle more find/replace pairs. Each time a pair is added, the formula needs to be updated to include the new pair. It's important also to make sure the named ranges (if you are using them) are updated to include new values as needed. Alternately, you could use a proper Excel Table for dynamic ranges, instead of named ranges.

Other uses

The same approach can be used to clean up text by "stripping" punctuation and other symbols from text with a series of substitutions. For example, the formula on this page shows how to clean and reformat telephone numbers.

Dave Bruns Profile Picture

AuthorMicrosoft Most Valuable Professional Award

Dave Bruns

Hi - I'm Dave Bruns, and I run Exceljet with my wife, Lisa. Our goal is to help you work faster in Excel. We create short videos, and clear examples of formulas, functions, pivot tables, conditional formatting, and charts.