Hallo zusammen,
hänge aktuell an einem ziemlich nervigen Problem:
Ich habe zwei Datasets in Excel mit entsprechenden Abfragen. In VBA ziehe ich aus beiden Sets Informationen auf Basis des Namens. Das Problem ist, dass bei dem einen Set nahezu nur Nachnamen (bei redundanten Nachnamen wird der erste Buchstabe des Vornamen mit einem Punkt vorgestellt) und beim anderen Vor- und Nachname. Da die Namen über ein Makro gesucht werden sollen, muss ich sinnvollerweise das Data Set mit nur Nachnamen dem anderen angleichen. Ist das nur manuell möglich? Bin da nicht so scharf drauf weil das über 500 Datensätze sind. Oder gibt es da eine andere Möglichkeit?
Vielen Dank für die Hilfe!
Hallo,
bei der Find-Methode gibt es die Möglichkeit, nach Teilstrings zu suchen. (LookAt:= xlPart)
Hallo GoFlake,
das angleichen der Datensätze würde ich manuell machen.
Über eine Wenn-Formel checken, ob rechts ein Punkt steht, wenn ja, diesen löschen.
Dann ein "*" an den Text hängen.
Jetzt kannst Du per SVerweis deine Daten abgleichen.
Gruß,
Lutz
Hallo,
da deine Beschreibung, was ausgabeseitig passieren soll unklar ist, habe ich die Ausgaben in eine Messagebox gepackt.
Code:
Option Explicit
Sub PassendeNamenFinden()
Dim i As Long, j As Long, arrKurzName(), VarLangName$, VarKurzName$
arrKurzName = Tabelle1.Range("A1:A" & Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row).Value
With Tabelle2
For i = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To UBound(arrKurzName, 1)
VarLangName = .Cells(i, 1)
VarKurzName = arrKurzName(j, 1)
If Mid(VarKurzName, 3, 1) = " " Then
If Left(VarLangName, 1) & ". " & Right(VarLangName, Len(VarLangName) - InStrRev(VarLangName, " ")) = VarKurzName Then
MsgBox Left(VarLangName, 1) & ". " & Right(VarLangName, Len(VarLangName) - InStrRev(VarLangName, " ")) & " und " & VarKurzName & " in Zeile " & j & " sind passend"
End If
Else
If Right(VarLangName, Len(VarLangName) - InStrRev(VarLangName, " ")) = VarKurzName Then
MsgBox Right(VarLangName, Len(VarLangName) - InStrRev(VarLangName, " ")) & " und " & VarKurzName & " in Zeile " & j & " sind passend"
End If
End If
Next j
Next i
End With
End Sub
Es werden in 2 Schleifen mit jeweils 2 Abfragen alle Nachnamen abgefragt und differenziert, ob das 3. Zeichen im String ein Leerzeichen ist. Man könnte auch den Punkt als 2. Zeichen verwenden.
Teste mal ob es so für deine Zwecke schon passt. Besser ist es eine Beispieldatei hochzuladen. Damit man den Code nicht für die Katz schreibt.
Anbei noch die fiktive Namensliste mit dem Code zum Testen.
Gruß Uwe
Hallo,
da hatte ich noch einen deftigen Denkfehler drin. So sollte es funktionieren unter der Bedingung, dass bei Mehrfachnamen der gleiche Anfangsbuchstabe und Punkt des Vornamens nicht mehrfach trotz unterschiedlichen Vornamen vorkommt. Also saubere eindeutige Kürzel der Vornamen.
Teste mal.
[
attachment=44531]
Gruß Uwe