ich habe in zwei Zellen Strings, deren Ähnlichkeit ich messen möchte. Beispiel:
HEIDELBERGER DRUCKMASCHINEN WEB-SOLUTIONS CEE GES.M.B.H.
Heidelberger Druckmaschinen WEB-Solution CEE Ges.m.b.H
Unterschiede sind hier die Groß-/Kleinschreibung, das fehlende "s" bei Solutions sowie der fehlende Punkt am Ende des zweiten Strings. Der eine String ist immer in Großbuchstaben, der andere nicht.
Meine Überlegung war nun, wie folgt vorzugehen:
1. Umwandlung des einen Strings in Großbuchstaben
2. Trennung der beiden Strings in die einzelnen Zeichen
3. Aufsteigende Sortierung der einzelnen Zeichen für jeden String
4. Paarweise Vergleich der einzelnen Zeichen. Wenn das erste Zeichen des kürzeren Strings irgendwo im längeren String gefunden wird, gibt es einen Punkt, und das Zeichen wird aus dem Bestand der Vergleichsdaten gelöscht. Entsprechend für alle weiteren Zeichen.
5. In meinem Beispiel würden alle 54 Zeichen des kürzeren Strings in den 56 Zeichen des längeren Strings gefunden werden. Der Stringvergleich ergäbe also 54 von 56 möglichen Punkten. Damit wäre der zu berechnende Index 54/56. Der Index wäre immer zwischen 0 und 1 und die Ähnlichkeit umso größer, je näher der Wert an 1 ist. Bei Identität der Strings wäre der Wert 1.
5a. Alternativ wäre es auch möglich, auszuzählen, wie oft welches Zeichen im kürzeren String vorkommet und das mit einer Auszählung der Zeichen im längeren String zu vergleichen.
Beispiel: 1. AAABCCCC 2. AAAACCDDDD
Gemeinsam sind AAA und CC, d.h. die Ähnlichkeit ist 5/10 oder 0,5.
Meine Fragen: Hat jemand Erfahrungen mit einer solchen Aufgabenstellung? Ist die Herangehensweise grundsätzlich geeignet? Wie könnte man das in VBA lösen?
Ich habe die Aufgabe hier vereinfacht dargestellt. Konkrete geht es darum, dass in 2 Tabellen zu mehreren Hundert "Objekten" je drei Strings abgelegt sind (Name, Land, Ort) anhand derer die Ähnlichkeit gemessen werden soll. Wenn ich für den Namen (so.) eine Lösung habe, kann ich das aber übertragen.
Danke im voraus
Martin