VBA um Adelstitel zu trennen
28.08.2014 16:14:24
An
ich habe lange recherchiert und habe folgenden VBA gefunden:
[code]
Sub Namen_Titel_trennen()
Dim lloZeile As Long, larstrSplit1() As String, larstrSplit2() As String, liTitel As _
Integer, liName As Integer
For lloZeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
larstrSplit1 = Split(Range("A" & lloZeile).Value, ".")
larstrSplit2 = Split(Trim(larstrSplit1(UBound(larstrSplit1))), " ")
For liName = 0 To UBound(larstrSplit2) - 1
Range("C" & lloZeile).Value = Range("C" & lloZeile).Value & larstrSplit2( _
liName) & " "
Next
Range("D" & lloZeile).Value = larstrSplit2(UBound(larstrSplit2))
For liTitel = 0 To UBound(larstrSplit1) - 1
Range("B" & lloZeile).Value = Range("B" & lloZeile).Value & larstrSplit1( _
liTitel) & "."
Next
Next
End Sub
[/code]An sich macht dieser Code genau das was ich will: Titel, Name und Vornamen trennen.
Was ich noch vermisse, ist, dass der Code auch Adelstitel erkennt und zum Nachnamen dazu voranfügt.
Ich denke da an so etwas zb. [code]{=WENN(ANZAHL(FINDEN({" zu ";" von ";" ob ";" de ";" van ";" auf ";" vom "};A1));TEIL(A1;VERWEIS(99;FINDEN({" zu ";" von ";" ob ";" de ";" van ";" auf ";" vom "};A1))+1;99);TEIL(A1;MAX((TEIL(A1;SPALTE($1:$1);1)=" ")*SPALTE($1:$1))+1;99))}[/code]
Nur, dass dies halt irgendwie mit in die VBA formel integriert wird... leider habe ich keine ahnung von VBA-Programmierung, was sich aber hoffentlich langsam verbessern wird :)
Hat jemand eine Idee, wie ich die Adelstitel mit in den Code integrieren kann?
Achja, was mir auch noch einfällt:
Gibt es eigentlich auch die Möglichkeit, dass das Ergebnis des VBA-Codes geglättet wird, also dass die Leerzeichen am Anfang und am Ende gleich entfernt werden? Im moment mache ich das immer noch anschließend manuell...
Und außerdem wollte ich wissen, wie der Code aussehen würde, wenn in eine weitere Spalte noch zusätzlich (wenn vorhanden) die Anrede "Herr" oder "Frau" getrennt wird? Also sprich gleiches Spiel wie oben, nur dass dann noch eine weitere Spalte mehr existiert, die Herr oder Frau ausgibt?
Vielen Dank im Voraus!
Mit freundlichen Grüßen
Peter
PS: hier ein paar Beispiele:
http://s14.directupload.net/images/140828/9a82rhn7.png
Wird nach anwenden deises VBA-Codes:
[code]
Sub Namen_Titel_trennen()
Dim lloZeile As Long, larstrSplit1() As String, larstrSplit2() As String, liTitel As _
Integer, liName As Integer
For lloZeile = 1 To Cells(Rows.Count, 1).End(xlUp).Row
larstrSplit1 = Split(Range("A" & lloZeile).Value, ".")
larstrSplit2 = Split(Trim(larstrSplit1(UBound(larstrSplit1))), " ")
For liName = 0 To UBound(larstrSplit2) - 1
Range("C" & lloZeile).Value = Range("C" & lloZeile).Value & larstrSplit2( _
liName) & " "
Next
Range("D" & lloZeile).Value = larstrSplit2(UBound(larstrSplit2))
For liTitel = 0 To UBound(larstrSplit1) - 1
Range("B" & lloZeile).Value = Range("B" & lloZeile).Value & larstrSplit1( _
liTitel) & "."
Next
Next
End Sub
[/code]zu:
http://s1.directupload.net/images/140828/ynadm29w.png
Wie ihr sehen könnt, bleibt der Adelstitel (hier) "de, von, zu" beim Vornamen und wird als zweiten Vornamen erkannt, was ja falsch ist. Zudem stimmt das Feld für "Frau und Herr" nicht.
Ich stelle mir die optimalaufteilung so vor: (A1= Anrede, B1=Titel, C1=Vorname(n), D1=Nachname mit Adelstitel)
http://s7.directupload.net/images/140828/wzt8myxw.png
Und als i-Tüpfelchen wäre es eben klasse, wenn alle Zellen im Anschluss noch geglättet werden, sodass keine Leerzeichen mehr am Anfang und Ende eines Wortes stehen.
Versteht ihr nun was ich meine? :)
Danke und Gruß!
Peter