Zellen vergleich
Guten Abend Community,
Ich habe ein Anliegen.
Ich habe eine Tabelle (2000 Zeilen)
Hier sollen in jeder Zeile, 2 Zellen miteinander verglichen werden.
Wenn diese 2 Zellen, nur einen geringen Unterschied aufweisen, soll mir das angezeigt werden oder anders rum.
Ich habe unten ein Beispiel wie Ich es Meine.
Ich habe auch durch die Hilfe eines Freundes bereits einen Code.
Das funktioniert soweit auch.
Aber bei Fällen wie:
Der eine Name enthält Bindestriche = großer Fehler (sollte ein kleiner sein)
oder
Spalte A Gisela Maier Spalte B Gisela Maier Helmut Maier
Hier ist auch ein großer Unterschied obwohl es ein kleiner sein sollte.
oder hier Spalte A Artur Sofin Spalte B Timo Sofin
müsste ein kleiner sein
Auch bei Klammern kommt ein großer Fehler
Habt Ihr da vielleicht eine Idee ?
Danke für eure Hilfe.
Liebe Grüße
MSBG
Ich habe ein Anliegen.
Ich habe eine Tabelle (2000 Zeilen)
Hier sollen in jeder Zeile, 2 Zellen miteinander verglichen werden.
Wenn diese 2 Zellen, nur einen geringen Unterschied aufweisen, soll mir das angezeigt werden oder anders rum.
Ich habe unten ein Beispiel wie Ich es Meine.
Ich habe auch durch die Hilfe eines Freundes bereits einen Code.
Sub Main
for i = 1 to cells(rows.count, 1).end(xlup).row
if instr(1, lcase(cells(i,1)), lcase(cells(i,2))) > 0 then
cells(i,4) = "kleiner Unterschied"
else
cells(i,4) = "großer Unterschied"
endif
next i
End Sub
Das funktioniert soweit auch.
Aber bei Fällen wie:
Der eine Name enthält Bindestriche = großer Fehler (sollte ein kleiner sein)
oder
Spalte A Gisela Maier Spalte B Gisela Maier Helmut Maier
Hier ist auch ein großer Unterschied obwohl es ein kleiner sein sollte.
oder hier Spalte A Artur Sofin Spalte B Timo Sofin
müsste ein kleiner sein
Auch bei Klammern kommt ein großer Fehler
Habt Ihr da vielleicht eine Idee ?
Danke für eure Hilfe.
Liebe Grüße
MSBG
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 585271
Url: https://administrator.de/forum/zellen-vergleich-585271.html
Ausgedruckt am: 21.04.2025 um 22:04 Uhr
2 Kommentare
Neuester Kommentar
Für solche Zwecke ist der instr Befehl nicht geeignet.
https://www.w3schools.com/asp/func_instr.asp
Kurz: Es wird ein String in einem String durchsucht. Du wertest das Ergebnis aus. Wenn das Ergebnis 0 ist, kommt String 2 nicht in String 1 vor. Wenn das Ergebnis 1 ist, kommt String 2 gleich am Anfang von String 1 vor. Wenn das Ergebnis 2 oder höher ist, kommt String 2 irgendwo in der Mitte von String 1 vor. String 2 muss also absolut übereinstimmend vorkommen und lässt keine Entscheidung zu wie Bindestriche oder andere Zeichen darin zu behandeln sind.
Du könntest nur eines machen, dass du die zwei zu vergleichenden Strings schon vorher von allen Bindestrichen und anderen Zeichen entledigst und dann erst zum instr schickst.
Ist jedoch der Text im String 2 länger, als in String 1, wird das Eregebnis immer 0 sein. Ein längerer String kann ja nicht in einem kürzeren String enthalten sein. Wenn du es auf die Spitze treiben willst, machst du noch einen zweiten Befehl und drehst die Suche um, also instr(1,string 2,string1).
https://www.w3schools.com/asp/func_instr.asp
Kurz: Es wird ein String in einem String durchsucht. Du wertest das Ergebnis aus. Wenn das Ergebnis 0 ist, kommt String 2 nicht in String 1 vor. Wenn das Ergebnis 1 ist, kommt String 2 gleich am Anfang von String 1 vor. Wenn das Ergebnis 2 oder höher ist, kommt String 2 irgendwo in der Mitte von String 1 vor. String 2 muss also absolut übereinstimmend vorkommen und lässt keine Entscheidung zu wie Bindestriche oder andere Zeichen darin zu behandeln sind.
Du könntest nur eines machen, dass du die zwei zu vergleichenden Strings schon vorher von allen Bindestrichen und anderen Zeichen entledigst und dann erst zum instr schickst.
Ist jedoch der Text im String 2 länger, als in String 1, wird das Eregebnis immer 0 sein. Ein längerer String kann ja nicht in einem kürzeren String enthalten sein. Wenn du es auf die Spitze treiben willst, machst du noch einen zweiten Befehl und drehst die Suche um, also instr(1,string 2,string1).

Wenn diese 2 Zellen, nur einen geringen Unterschied aufweisen, soll mir das angezeigt werden oder anders rum.
Das Vergleichen von Strings auf Ähnlichkeit nennt man Levenshtein-Distanz und die lässt sich sogar "exakt" ermitteln indem man die nötigen Einfüge- und Löschoperationen zum erreichen des Zielwerts zählt, hier dazu in VBA gefunden:Werte vergleichen die nicht 100 Prozent gleich sind
Kann man ja leicht in die Schleife über alle Werte einbauen.