Excel VBA - Strings vergleichen und Unterschiede markieren
Hallo,
ich schreibe mir gerade ein VB-Script für Excel dass 2 XML-Dateien miteinander vergleicht und die Unterschiede in einer Exceldatei ausgibt.
Derzeit vergleiche ich den gesamten Zelleninhalt und markiere en ganzen Text farbig.
Beispiel:
Ergebnis:
00 01 05 A1 FF
00 01 07 A1 FF
Jetzt möchte ich jedoch noch einen Auswertung hinzufügen, die in einem bestimmtes Feld nur die inhaltliche Unterschiede (einer HEX-Codierung) kennzeichnet:
Zelle 1 (Beispiel: .Rows(i + 12).Cells(2).Value): 00 01 05 A1 FF
Zelle 2 (Beispiel: .Rows(i + 12).Cells(3).Value): 00 01 07 A1 FF
Wie kann ich dies lösen?
ich schreibe mir gerade ein VB-Script für Excel dass 2 XML-Dateien miteinander vergleicht und die Unterschiede in einer Exceldatei ausgibt.
Derzeit vergleiche ich den gesamten Zelleninhalt und markiere en ganzen Text farbig.
Beispiel:
....
'Prüfe ob Werte identisch --> Unterschiede farbig kennzeichnen
For i = r + 2 To r + 10
If Not .Rows(i).Cells(3).Value = .Rows(i).Cells(2).Value Then
.Rows(i).Cells(3).Font.Color = -16776961 'Textfarbe: rot
End If
Next
00 01 05 A1 FF
00 01 07 A1 FF
Jetzt möchte ich jedoch noch einen Auswertung hinzufügen, die in einem bestimmtes Feld nur die inhaltliche Unterschiede (einer HEX-Codierung) kennzeichnet:
Zelle 1 (Beispiel: .Rows(i + 12).Cells(2).Value): 00 01 05 A1 FF
Zelle 2 (Beispiel: .Rows(i + 12).Cells(3).Value): 00 01 07 A1 FF
Wie kann ich dies lösen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 259524
Url: https://administrator.de/forum/excel-vba-strings-vergleichen-und-unterschiede-markieren-259524.html
Ausgedruckt am: 25.12.2024 um 02:12 Uhr
3 Kommentare
Neuester Kommentar
Hallo chef1568!
Soferne die Schreibweise der Hex-Werte Deinem Beispiel entspricht, etwa so:
Alternativ könnte auch ein zeichenweiser Vergleich erfolgen, dann würde aber in Deinem Beispiel nur die 7 rot geschrieben werden ...
Grüße
bastla
Soferne die Schreibweise der Hex-Werte Deinem Beispiel entspricht, etwa so:
Hex1 = Split(.Rows(i + 12).Cells(2).Value)
Hex2 = Split(.Rows(i + 12).Cells(3).Value)
For j = 0 To UBound(Hex1)
If Hex1(j) <> Hex2(j) Then
.Rows(i + 12).Cells(3).Characters(Start:=j * 3 + 1, Length:=2).Font.Color = vbRed
End If
Next
Grüße
bastla
Wenns ein einfacher String zu String -Vergleich sein soll geht auch das
Im Beispiel wird der Inhalt von A1 mit A2 verglichen, aber die Prozedur kannst du ja in deiner Schleife benutzen
Gruß jodel32
Sub CompareStrings(rng1 As Range, rng2 As Range)
For i = 1 To Len(rng2.Value)
If Mid(rng2.Value, i, 1) <> Mid(rng1.Value, i, 1) Then
rng2.Characters(i, 1).Font.Color = vbRed
End If
Next
End Sub
Sub Vergleichstest()
CompareStrings Range("A1"), Range("A2")
End Sub
Gruß jodel32