Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Excel Spalten vergleichen





Frage

Hallo, ich möchte den Inhalt von zwei Zellen in unterschiedlichen Tabellen nur "ungefähr" vergleichen. Problem: in Tabelle 1 steht in der zu vergleichenden Zelle ein Firmenname immer in Großbuchstaben: ACCOR SA in Tabelle 2 steht in der zu vergleichenden Zelle zusätzlich zum Firmennamen noch Ort und Land: ACCOR S.A., 91019 Evry (FR) Ich möchte über einen Vergleich wissen, ob der erste Teil des Namen aus Tabelle 1 (ohne Gesellschaftszeichnung, da diese nicht immer gleich geschrieben ist: SA oder S.A.) auch in Tabelle 2 vorkommt. Wenn ja, dann Meldung "JA". Tabelle 1 hat ca. 5000 Zeilen und Tabelle 2 ca. 600. Es würde mir reichen, alle Buchstaben bis zum ersten Lehrzeichen zu prüfen, ich hab aber keine Ahnung wie das gehen soll. Vergleich und Match gehen ja schließlich vom exakt gleichen Inhalt aus. Ausserdem muß ich ja jeweils eine Spalte komplett miteinander vergleichen. Bevorzugt wäre eine Angabe der englischen Befehle, wenn nicht, dann halt in Deutsch. Vielen Dank für Eure Hilfe Thomas

Antwort 1 von coros

Halo Thomas,

nachfolgend ein Makro, dass Dir die Spalten A in zwei verscheidenen Tabellenblättern (Namen der Blätter "Tabelle1" und "Tabelle2") vergleicht. Hier wird nur das Wort bis zum ersten Leerzeichen verglichen. Gibt es eine Übereinstimmung, wird diese Übereinstimmung in beiden Blättern farblich hervorgehoben, indem der Hintergrund in rot geändert wird.
Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche

Option Explicit

Sub Vergleichen()
Dim Search1     As Range
Dim Search2     As Range
Dim lastRowA    As Long
Dim lastRowB    As Long
Dim iLength1    As Integer
Dim iLength2    As Integer
lastRowA = Sheets("Tabelle1").Range("A65536").End(xlUp).Row
lastRowB = Sheets("Tabelle2").Range("A65536").End(xlUp).Row
For Each Search1 In Sheets("Tabelle1").Range("A1:A" & lastRowA)
    For Each Search2 In Sheets("Tabelle2").Range("A1:A" & lastRowB)
    On Error Resume Next
        iLength1 = InStr(Search1, " ")
        iLength2 = InStr(Search2, " ")
        If iLength1 > 0 And iLength2 > 0 Then
            If LCase(Left(Search1.Text, iLength1 - 1)) = LCase(Left(Search2.Text, iLength2 - 1)) Then
                Sheets("Tabelle1").Range(Search1.Address).Interior.ColorIndex = 3
                Sheets("Tabelle2").Range(Search2.Address).Interior.ColorIndex = 3
            End If
        Else
            If LCase(Search1.Text) = LCase(Search2.Text) Then
                Sheets("Tabelle1").Range(Search1.Address).Interior.ColorIndex = 3
                Sheets("Tabelle2").Range(Search2.Address).Interior.ColorIndex = 3
            End If
        End If
    Next
Next
End Sub


Ich hoffe, Du kommst klar.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.