Passende ähnliche, aber nicht exakte text-strings in Excel-VBA-Projekte
Okay, ich habe versucht, eine Lösung zu finden für dieses und ich weiß einfach nicht scheinen zu können. Ich kann nicht sogar brechen Sie das problem richtig. Das ist die Idee.
Ich habe zwei Tabellen mit vielen Zeilen (eine mit 800 und die anderen mit 300.000). Jede Zeile enthält eine Spalte "Name" und dann mehrere Spalten, die Informationen enthalten, die über diesen Namen. Jedes Blatt hat verschiedene Arten von Informationen.
Möchte ich festigen diese zwei Blätter in einem master-Blatt basierend auf dieser Spalte Name, den Sie beide haben, so die konsolidieren-Funktion ist perfekt dafür. Das problem ist jetzt, dass die Namen nicht übereinstimmen perfekt.
Z.B. Tabelle1 enthält
"Firma B. V.", "Info #1"
"Unternehmen Insgesamt", "Info #2"
"Company Ltd", "Info #3"
und Blatt 2 enthält
"Unternehmen und Co.", "Info #4"
"Unternehmen und Co", "Info #5"
Blatt 1 enthält alle Namen, die verwendet werden sollen (etwa 100, aber in verschiedenen Formen wie oben beschrieben) und Blatt 2 enthält alle diese 100 in mehrere Zeilen plus die Namen, die nicht in der Liste der 100 und ich daher nicht kümmern.
Wie würde ich eine VBA-code-Projekt, in dem das Ergebnis wäre so etwas wie dieses, Master-Blatt:
"Unternehmen", "Info #1", "Info #2", "Info #3", "Info #4", "Info #5"
für jeden einzelnen "Unternehmen" (100-Liste) gibt es??
Ich hoffe es gibt eine Lösung für dieses. Ich bin ziemlich neu im VBA-Projekte, aber ich habe getan, einige minimale Codierung vor.
Setzen Sie Art von Kriterien für das, was "ähnlich genug" bedeutet... Zum Beispiel, wäre es OK nur Spiel, basierend auf das erste Wort zwischen den 2 Platten??
Ja, Sie sind beide Recht, leider, das erste Wort ist nicht eine option. Gibt es eine Möglichkeit zu finden, eine minimale Länge der Zeichen, die übereinstimmung zwischen zwei Zeichenketten, und verwenden Sie diese als die "Company" - name, also ein ganzes Wort sollte passen perfekt, einschließlich der Leerzeichen vor und nach.
Was über alle Wörter, die größer als 4 Zeichen innerhalb einer Zelle übereinstimmen sollten, genau? Ist das ein 'makable' Zustand?
... Da dein Beispiel oben die Zelle mit
Company Total
würde nicht den 4-char Kriterien, so stellen Sie sicher, dass Sie damit glücklich sind, aber wenn Sie ok waren, würde ich schreiben, eine einfache VBA-Funktion, die eine Zelle (oder string) und eine Zahl (für die Anzahl der Charaktere übereinstimmen) als inputs. Es würde dann untersuchen Sie jedes Wort in einer Zeichenfolge - Wenn es länger ist als die erforderliche Anzahl von Zeichen, dann fügen Sie es auf eine Ausgabe-string - dann könnte man vergleichen die 2 Zellen die Werte, sobald Sie umgezogen durch diese Funktion... Nur eine Herausforderung ist, wenn die Worte in unterschiedlicher Reihenfolge in den Zellen.InformationsquelleAutor Ampi Severe | 2012-11-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde das makro in Ihrer PERSÖNLICHEN Abschnitt, auf diese Weise das makro in allen Arbeitsblättern. Tun Sie dies durch die Aufnahme einer dummy-makro, und wählen Sie, um es zu speichern in Persönlicher Makro-Arbeitsmappe. Jetzt können Sie manuell hinzufügen, neue Makros und Funktionen in diesem persönlichen Arbeitsmappe.
Ich habe gerade versucht diese (weiß nicht die ursprüngliche Quelle) und es funktioniert gut.
Die Formel sieht wie folgt aus: =PERSÖNLICHE.XLSB!FuzzyFind(A1; B$1:B$20)
Der code ist hier:
InformationsquelleAutor Robert Ilbrink
Ich benutzt Robert die Lösung und es funktioniert gut für mich. Ich bin Entsendung ganze Lösung für Menschen, die neu sind für excel, aber weiß, Kodierung:
Obwohl dieser thread ist alt, aber ich habe etwas code aus den anderen threads und versucht und sieht aus wie Lösung gibt ca match. Hier bin ich, der versucht, eine Spalte von sheet1 mit einer Spalte von Tabelle2:
InformationsquelleAutor Garima SP
Können Sie Google-Excel-UDF-Fuzzy-Suche oder die Levensthein-Distanz. Es gibt einige UDF ' s im Umlauf und Microsoft hat eine Fuzzy lookup/Spiel-add-on (wenn ich es benutzt habe, war es crash-anfällig und nicht intuitiv).
InformationsquelleAutor Robert Ilbrink
Werfen Sie einen Blick auf die Funktionen, die auf diese N ddoe post. Sie könnten erzeugen eine längste gemeinsame Sequenz-string und vergleichen Sie die Länge der ursprünglichen Zeichenkette. Füttern einige bekannte Spiele und einige enge nicht entspricht, und sehen, wenn Sie sehen können, eine klare Trennlinie zwischen Ihnen.
Diese Funktionen verwendet werden für diff, nicht finden, schließen Sie Streichhölzer, aber Sie können für Sie arbeiten.
InformationsquelleAutor Dick Kusleika
Nicht genau auf dem Punkt aber ähnlich, und der Umgang der Menschen mit meine Problem sind wahrscheinlich zu finden diese Seite bei der Suche.
Aufgabe: Eine Liste der Patienten, die in Auto-Wracks, einschließlich Straßennamen. Finden Sie Verwandte Konten basiert auf der gleichen Straße. Die Liste wird maximal vielleicht 120 Datensätze--so teilweise manuelle überprüfung ist realistisch.
Problem: Street-Adressen sind ähnlich, aber nicht identisch, z.B. 123 JONES, LANE und 123 JONES LN oder 72 MAIN STREET #32 und 72 MAIN STREET # 32.
Teil der Lösung ist zu vergleichen nur der Straße zahlen. Mit einer Liste, dass die Größe ist es ungewöhnlich, zwei verschiedene Adressen mit dem gleichen Strasse, Nummer (z.B. 123-JONES-GASSE und HAUPTSTRAßE 123).
Vorsicht: Sie können nicht verwenden Sie die VAL() zum ziehen der Straße. Versuchen Sie es mit 167 E 13 ST. VBA sieht, dass als 167^13 und wird Abstürzen, wenn Sie die Ausgabe auf Street_Num Als Integer. So haben Sie, um eine Schleife zu ziehen, die Ziffern in einen neuen string und stoppen an der ersten nicht-Ziffer-Zeichen.
InformationsquelleAutor RIck_R