Excel Smart Find and Replace only specific characters
Solution 1:
If you go the VBA route, try using Regular Expressions
Here's a start
Sub ReplaceWithRE()
Dim re As Object 'RegExp
Dim rng As Range, cl As Range
Dim sh As Worksheet
Dim wb As Workbook
Dim sReplace As String
Dim aReplace(0 To 1, 0 To 1) As String
Dim i As Long
Set wb = ActiveWorkbook
Set re = CreateObject("vbscript.regexp") ' New RegExp
re.Global = True
re.IgnoreCase = False
re.MultiLine = True
' Load array of patterns and replacements
aReplace(0, 0) = "\bINT\b"
aReplace(0, 1) = "INTERNATIONAL"
aReplace(1, 0) = "\bNA\b"
aReplace(1, 1) = "NATIONAL ASSEMBLY"
For Each sh In wb.Worksheets
On Error Resume Next
Set rng = sh.UsedRange.SpecialCells(xlCellTypeConstants)
If Err.Number <> 0 Then
Err.Clear
Else
On Error GoTo 0
For Each cl In rng
sReplace = cl.Value
' Test each cell for each pattern, replace when found
For i = 0 To UBound(aReplace, 1)
re.Pattern = aReplace(i, 0)
If re.Test(sReplace) Then
sReplace = re.Replace(sReplace, aReplace(i, 1))
End If
Next
cl.Value = sReplace
Next
End If
Next
End Sub
Solution 2:
If the values you are looking to replace are by themselves in the cells (no other text), definitely follow CharlieRB's solution. If the values are located in the cells, along with additional text, a slightly modified version would work.
Open the Find and Replace window. Click the "Replace" tab.
Enter the "Find what" and the "Replace with" values. Click the "Find All" button.
Review the list at the bottom that details what records were found. Highlight the record you want to update, and click the "Replace" button.