Namensübereinstimmung in einer Spalte und erforderliches Ergebnis in der nächsten Spalte

Namensübereinstimmung in einer Spalte und erforderliches Ergebnis in der nächsten Spalte

Ich habe eine sehr lange Datenbank mit etwa 400.000 bis 500.000 Zeilen Daten und möchte das Ergebnis in der nächsten Spalte mit einem ähnlichen Namen.

Ich versuche, Fuzzy zu verwenden, habe aber keine eindeutige Liste für die Übereinstimmung.

Bildbeschreibung hier eingeben

Antwort1

Zur Lösung des Problems benötigen Sie VBA (Makro):

Bildbeschreibung hier eingeben

Wie es funktioniert:

  • Drücken Sie entwederAlt+F11oderRechtsklickTabulatortaste für Tabellenblatt und im eingeblendeten Menü aufCode anzeigen.
  • KopierenundPastedieser Code alsStandardmodul.
  • LAUFENdas Makro.

     Private Sub Worksheet_SelectionChange(ByVal rngSel As Range)
      Set rngTable = [I2:K17]
       If rngSel.Count > 1 Or Intersect(rngSel, rngTable) Is Nothing Then End
       For Each rngCell In rngTable
    rngCell.Interior.ColorIndex = IIf(rngCell.Value = rngSel.Value, 27, -4142)
       Next
     End Sub
    

Achtung

  • In diesem Code sind rngTable = [I2:K17]Zellreferenzen sowie Farbcode 27, -4142editierbar.

Antwort2

Ich würde einen von zwei Ansätzen wählen:

1) Verwenden Sie eine Nachschlagetabelle und versuchen Sie, alle möglichen Variationen zu erschöpfen, die sich idiotische Benutzer für dasselbe ausdenken können, oder verwenden Sie Quelldaten und entfernen Sie Duplikate, um die bekannte Liste dummer Optionen zu erhalten. Das ist die Art von Dingen, die ich tun muss, wenn ich Kontaktdaten mit „Berufsbezeichnung“ migriere – der bisherige Datensatz umfasst 67 verschiedene Arten, „Managing Director“ zu formatieren oder zu schreiben (MD, MD, M Dir, Manging Driector usw.). Dieser Ansatz eignet sich hervorragend für eine einmalige Aktion mit historischen Daten – in meinem Fall haben wir nach der Migration der Daten Dropdown-Auswahllisten verwendet, um zu verhindern, dass Benutzer in einem neuen System einfach dasselbe alte Problem verursachen.

2) Verwenden Sie eine Reihe von Regeln, um irrelevante Informationen, die Sie nicht für notwendig halten, um zwischen übereinstimmenden Dingen zu unterscheiden, „wegzuwerfen“. Eine Reihe verschachtelter SUBSTITUTE-Funktionen, die kurze Zeichenfolgen durch „“ ersetzen, erledigt den Trick. Ersetzen Sie zuerst Satzzeichen wie . - / :, dann Dinge wie (PVT) und Ltd und Limited – wenn eine dieser kurzen Zeichenfolgen mehrdeutig ist und in einem anderen Wort vorkommen könnte, fügen Sie davor, danach oder an beiden ein Leerzeichen ein. Ein gutes Beispiel ist das Ersetzen von „Co “, aber nicht von „Co“, um zu vermeiden, dass „mpany“ oder „bblers“ entsteht. Setzen Sie das äußerste SUBSTITUTE „ “ für „“ (d. h. entfernen Sie die Leerzeichen zuletzt). Dies betrifft „ABC Foods“, lässt aber die Leerzeichen bis zuletzt, sodass Sie Zeichenfolgen weiterhin analysieren können, ohne Wortteile zu verlieren.

Ich gehe davon aus, dass Sie „ABC Foods“ mit „ABC Foods (PVT) Ltd.“ gleichsetzen.

Erstellen Sie nun eine Liste aller „richtigen“ Antworten. Erstellen Sie mit Ihrer Formel eine zweite Spalte links und kopieren Sie diese dann mit „Kopieren“ > „Inhalte einfügen“ > „Werte“, um sie zu „glätten“. Verwenden Sie nun in Ihren Hauptdaten Ihre Ersetzungen, um den Namen auf sein minimalistisches Format zu reduzieren, und verwenden Sie dies dann als Nachschlagewert, um die „richtige“ Version zurückzugeben. Sie können eine Hilfsspalte für die ERSATZTEILE verwenden oder alles auf einmal erledigen.

Dieser Ansatz erfordert mehrere Anläufe, bis er richtig funktioniert und alle Teile gefunden werden, die getrost weggeworfen werden können. Danach ist er jedoch robuster, wenn die Quelldaten in Zukunft neue, unerwartete Fehler enthalten könnten.

Denken Sie daran: Wenn Sie versuchen, es idiotensicher zu machen, wird jemand einfach losgehen und einen noch größeren Idioten holen.

verwandte Informationen