PDA

View Full Version : [SOLVED:] VBA Text Comparisons Identifying Differences



Huh?
04-22-2021, 12:16 PM
Hi, Full disclosure. I lack VBA knowledge (and by lack VBA knowledge, I mean I can barely spell it!) I am comparing two columns of data (column D and column E) which contain several sentences inclusive of commas, semicolons, parenthesis's, extra spaces etc. I tried to tweak VBA code provided by the site "Extend Office" but have been unsuccessful. FAIL. I would like the VBA code to highlight only the differences between the two text cells. The issue is once the script recognizes a difference in the two text cells, it highlights the difference AND the following text. I would like Excel to highlight only the different word. For Example, Cell Reference C2: The brown dog jumped over the fence. Cell Reference D2: The brown cat jumped over the fence. VBA result: The brown cat jumped over the fence. I would like Excel to return: The brown cat jumped over the fence. Any help would be greatly appreciated. The following is the code I am trying to tweak......



Sub highlight()
Dim xRg1 As Range
Dim xRg2 As Range
Dim xTxt As String
Dim xCell1 As Range
Dim xCell2 As Range
Dim I As Long
Dim J As Integer
Dim xLen As Integer
Dim xDiffs As Boolean
On Error Resume Next
If ActiveWindow.RangeSelection.Count > 1 Then
xTxt = ActiveWindow.RangeSelection.AddressLocal
Else
xTxt = ActiveSheet.UsedRange.AddressLocal
End If
lOne:
Set xRg1 = Application.InputBox("Range A:", "Object Revision Identification", xTxt, , , , , 8)
If xRg1 Is Nothing Then Exit Sub
If xRg1.Columns.Count > 1 Or xRg1.Areas.Count > 1 Then
MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
GoTo lOne
End If
lTwo:
Set xRg2 = Application.InputBox("Range B:", "Kutools for Excel", "", , , , , 8)
If xRg2 Is Nothing Then Exit Sub
If xRg2.Columns.Count > 1 Or xRg2.Areas.Count > 1 Then
MsgBox "Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
GoTo lTwo
End If
If xRg1.CountLarge <> xRg2.CountLarge Then
MsgBox "Two selected ranges must have the same numbers of cells ", vbInformation, "Kutools for Excel"
GoTo lTwo
End If
xDiffs = (MsgBox("Click Yes to highlight similarities, click No to highlight differences ", vbYesNo + vbQuestion, "Kutools for Excel") = vbNo)
Application.ScreenUpdating = False
xRg2.Font.ColorIndex = xlAutomatic
For I = 1 To xRg1.Count
Set xCell1 = xRg1.Cells(I)
Set xCell2 = xRg2.Cells(I)
If xCell1.Value2 = xCell2.Value2 Then
If Not xDiffs Then xCell2.Font.Color = vbRed
Else
xLen = Len(xCell1.Value2)
For J = 1 To xLen
If Not xCell1.Characters(J, 1).Text = xCell2.Characters(J, 1).Text Then Exit For
Next J
If Not xDiffs Then
If J <= Len(xCell2.Value2) And J > 1 Then
xCell2.Characters(1, J - 1).Font.Color = vbRed
End If
Else
If J <= Len(xCell2.Value2) Then
xCell2.Characters(J, Len(xCell2.Value2) - J + 1).Font.Color = vbRed
End If
End If
End If
Next
Application.ScreenUpdating = True
End Sub

mancubus
04-23-2021, 07:13 AM
https://chandoo.org/wp/compare-data-highlight-mismatched-letters-words/

download the sample workbook.
run the macro.
check if the results match your requirements.

Huh?
04-23-2021, 08:32 AM
Perfect. Thanks!