Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1016to1020
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Text vergleichen

Text vergleichen
20.10.2008 14:21:00
BuStü
Hallo Leute, ist es möglich per Formel folgendes Probelm zu lösen:
 AB
1Kunden-Nr.Kunden Name
240506050 Wolken, Max Müller GmbH
3  
4  
5KundenNr.Kunden Name
67081650 Wolken


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
In der ersten Tabelle (2400 DS) sind Kundennummer und Kundennamen sowie in der zweiten Tabelle (700DS). Die Namen sind nur teilweise identisch, die Nummern verschieden. Kann man nun die teilweise identischen Namen vergleichen und die Kundennummer hinzufügen. Bsp. Kunden-Nr. 405060 Kunden-Nr. 70816 Kuindenname
50 Wolken.
Für Eure Hilfe im Voraus dankend
Burghard

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text vergleichen
20.10.2008 14:44:00
David
Hallo Burghard,
lies dir bitte nochmal deine Problembeschreibung durch und frage dich selbst, ob das jemand, der deine Tabellen nicht kennt, verstehen kann.
Ich werde weder aus deinem Beispiel schlau noch aus deiner Beschreibung.
Prinzipiell ist ein Vergleich von Datensätzen immer möglich, wenn es ein eindeutiges Kriterium, wie z. Bsp. Kundennummer gibt, allemal.
Vielleicht solltest du auch eine Beispieltabelle hochladen, wo man sieht, was vorher da ist und wohin du wilslt.
Gruß
David
AW: Text vergleichen
20.10.2008 15:04:09
BuStü
Hallo David,
tut mir leid das ich mich undeutlich ausgedrückt habe. In der Beispielmappe https://www.herber.de/bbs/user/56141.xls Tabelle 1 , müßte hervorgehen, wohin ich möchte.
MfG
Burghard
Anzeige
AW: Text vergleichen
20.10.2008 15:13:00
David
Hallo Burghard,
das muss DIR nicht leid tun. ;-)
Prinzipiell ist das ein einfacher SVERWEIS nach links mit der Formel:
=INDEX(Tabelle2!A:A;VERGLEICH(B2;Tabelle2!B:B;0))
Allerdings muss dazu der Name in beiden Teilen IDENTISCH sein. Falls das nicht so ist, muss zumindest eins eine identische TEILMENGE des anderen sein. Falls das vorkommen soll, erläutere bitte noch mögliche Abweichungen.
Eine sog. "unscharfe" Suche kannst du mit Excel-Logik nicht realisieren.
Gruß
David
AW: Text vergleichen
20.10.2008 16:11:42
BuStü
Hallo David,
recht vielen Dank für Deine Lösung.
Kann man den Vergleich zumindestens auf die ersten beiden Namen einschränken, also wenn in einer Tabelle Wolke steht soll in der anderen Tabelle Wolke GmbH als identisch hingenommen werden.
MfG
Burghard
Anzeige
AW: Text vergleichen
21.10.2008 08:09:00
David
Hallo Burghard,
ich denke, mit der Lösung von fcs bist du gut versorgt. Sicher kann man auch per Formel eine Suche nach Teilmengen machen, aber das ist jetzt wohl müßig.
Gruß
David
AW: Text vergleichen
20.10.2008 16:44:00
fcs
Hallo Burghard,
bei einem solchen Vergleich mit teilweisen Übereinstimmungen gibt es natürlich immer eine gewisse Fehlerquote.
Bei meiner Makro-Lösung werden zunächst die identischen Namen gesucht. Danach wird nach max. Anzahl an übereinstimmenden Wörtern gesucht, wobei ich die Tabelle2 in beiden Richtungen durchsuche, um ggf. den einen oder anderen Fehler zu finden bei ähnlichen Namen.
Einige in vielen Namen vorkommende Worte, wie "Co", "GmbH" etc., werden dabei nicht berücksichtigt.
Gruß
Franz
Sub KD_Namen_Abgleich() Dim wks1 As Worksheet, wks2 As Worksheet Dim lngZeile1 As Long, lngZeile2 As Long Dim arrWorte1, arrWorte2, intW1 As Integer, intW2 As Integer Dim varSuchen As Variant, rngSuchen As Range Dim varSuchen1 As Variant Set wks1 = Worksheets("Tabelle1") Set wks2 = Worksheets("Tabelle2") 'identische Einträge abgleichen For lngZeile1 = 2 To wks1.Cells(wks1.Rows.Count, 1).End(xlUp).Row varSuchen = wks1.Cells(lngZeile1, 2) 'Kundenname 'Name in Tabellel2 suchen With wks2 Set rngSuchen = .Columns.Find(what:=varSuchen, LookIn:=xlValues, _ lookat:=xlWhole) If Not rngSuchen Is Nothing Then wks1.Cells(lngZeile1, 3) = rngSuchen.Offset(0, -1).Value 'KD-Nr. wks1.Cells(lngZeile1, 4) = rngSuchen.Value 'Name wks1.Cells(lngZeile1, 5) = "identisch" End If End With Next 'Wörter in Kundennamen vergleichen For lngZeile1 = 2 To wks1.Cells(wks1.Rows.Count, 1).End(xlUp).Row If IsEmpty(wks1.Cells(lngZeile1, 3)) Then 'gefundene identische überspringen 'Kundenname in Tabelle 1 splitten arrWorte1 = Split(wks1.Cells(lngZeile1, 2), " ") With wks2 'Vorwärts-Suche nach max. an Übereinstimmungen im Kundennamen varSuchen1 = 0 For lngZeile2 = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row arrWorte2 = Split(.Cells(lngZeile2, 2), " ") varSuchen = 0 'Arrays vergleichen For intW1 = LBound(arrWorte1) To UBound(arrWorte1) For intW2 = LBound(arrWorte2) To UBound(arrWorte2) Select Case LCase(arrWorte2(intW2)) Case "&", "gmbh", "co.", "co", "kg", "co.kg", "+", "-", "ag" 'Worte die beim Vergleich nicht berücksichtigt werden sollen Case Else If LCase(arrWorte1(intW1)) = LCase(arrWorte2(intW2)) Then 'Übereinstimmungen zählen varSuchen = varSuchen + 1 End If End Select Next Next 'Prüfen, ob neues max. an Übereinstimmungen If varSuchen > varSuchen1 Then wks1.Cells(lngZeile1, 3) = .Cells(lngZeile2, 1).Value 'KD-Nr. wks1.Cells(lngZeile1, 4) = .Cells(lngZeile2, 2).Value 'Name wks1.Cells(lngZeile1, 5) = varSuchen & " Worte" varSuchen1 = varSuchen End If Next 'Rückwärts-Suche nach max. an Übereinstimmungen im Kundennamen varSuchen1 = 0 For lngZeile2 = .Cells(.Rows.Count, 1).End(xlUp).Row To 2 Step -1 arrWorte2 = Split(.Cells(lngZeile2, 2), " ") varSuchen = 0 'Arrays vergleichen For intW1 = LBound(arrWorte1) To UBound(arrWorte1) For intW2 = LBound(arrWorte2) To UBound(arrWorte2) Select Case LCase(arrWorte2(intW2)) Case "&", "gmbh", "co.", "co", "kg", "co.kg", "+", "-" 'Teil-Worte die nicht berücksichtigt werden sollen Case Else If LCase(arrWorte1(intW1)) = LCase(arrWorte2(intW2)) Then varSuchen = varSuchen + 1 End If End Select Next Next If varSuchen > varSuchen1 Then wks1.Cells(lngZeile1, 6) = .Cells(lngZeile2, 1).Value 'KD-Nr. wks1.Cells(lngZeile1, 7) = .Cells(lngZeile2, 2).Value 'Name wks1.Cells(lngZeile1, 8) = varSuchen & " Worte" varSuchen1 = varSuchen End If Next If wks1.Cells(lngZeile1, 7) wks1.Cells(lngZeile1, 4) Then wks1.Cells(lngZeile1, 9) = "abgleichen!" End If End With End If Next End Sub


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige