Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel VBA - Strings vergleichen und Unterschiede markieren

Frage Entwicklung VB for Applications

Mitglied: chef1568

chef1568 (Level 1) - Jetzt verbinden

11.01.2015, aktualisiert 19:12 Uhr, 3807 Aufrufe, 3 Kommentare

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:
01.
.... 
02.
'Prüfe ob Werte identisch --> Unterschiede farbig kennzeichnen 
03.
   For i = r + 2 To r + 10 
04.
      If Not .Rows(i).Cells(3).Value = .Rows(i).Cells(2).Value Then 
05.
         .Rows(i).Cells(3).Font.Color = -16776961   'Textfarbe: rot 
06.
      End If 
07.
   Next
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?

Mitglied: bastla
LÖSUNG 11.01.2015, aktualisiert um 19:12 Uhr
Hallo chef1568!

Soferne die Schreibweise der Hex-Werte Deinem Beispiel entspricht, etwa so:
01.
Hex1 = Split(.Rows(i + 12).Cells(2).Value) 
02.
Hex2 = Split(.Rows(i + 12).Cells(3).Value) 
03.
For j = 0 To UBound(Hex1) 
04.
    If Hex1(j) <> Hex2(j) Then 
05.
        .Rows(i + 12).Cells(3).Characters(Start:=j * 3 + 1, Length:=2).Font.Color = vbRed 
06.
    End If 
07.
Next
Alternativ könnte auch ein zeichenweiser Vergleich erfolgen, dann würde aber in Deinem Beispiel nur die 7 rot geschrieben werden ...

Grüße
bastla
Bitte warten ..
Mitglied: 114757
11.01.2015, aktualisiert um 19:06 Uhr
Wenns ein einfacher String zu String -Vergleich sein soll geht auch das
01.
Sub CompareStrings(rng1 As Range, rng2 As Range) 
02.
    For i = 1 To Len(rng2.Value) 
03.
        If Mid(rng2.Value, i, 1) <> Mid(rng1.Value, i, 1) Then 
04.
            rng2.Characters(i, 1).Font.Color = vbRed 
05.
        End If 
06.
    Next 
07.
End Sub 
08.
 
09.
Sub Vergleichstest() 
10.
    CompareStrings Range("A1"), Range("A2") 
11.
End Sub
Im Beispiel wird der Inhalt von A1 mit A2 verglichen, aber die Prozedur kannst du ja in deiner Schleife benutzen

Gruß jodel32
Bitte warten ..
Mitglied: chef1568
11.01.2015 um 19:50 Uhr
genau das habe ich gebraucht!

Ich habe zwar den Code noch um einiges aufwändiger gestalten müssen aber in den Grundzügen hat es perfekt funktioniert!

Danke
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel-Formel oder VBA (7)

Frage von nicki01 zum Thema Microsoft Office ...

VB for Applications
gelöst VBA Excel Skript - Hilfe! (1)

Frage von 133202 zum Thema VB for Applications ...

VB for Applications
SNMP Abfrage in EXCEL über VBA (7)

Frage von SebastianL zum Thema VB for Applications ...

VB for Applications
Bilder vom LDAP in VBA - Excel (3)

Frage von 94451 zum Thema VB for Applications ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
CNC Maschinen verlieren Netzwerkverbindung (kurioser Fehler) (22)

Frage von NoHopeNoFear zum Thema LAN, WAN, Wireless ...

Webentwicklung
Aktuellen Mitarbeiter auf Homepage anzeigen (13)

Frage von alemanne21 zum Thema Webentwicklung ...

Windows Server
gelöst Parameter Übergabe Terminal Server (9)

Frage von ThomasKern zum Thema Windows Server ...

Batch & Shell
Anfängerfragen - Powershell - Mailboxvertretung im Pulk einrichten (8)

Frage von Yoshimitsu zum Thema Batch & Shell ...