Anzeige
Archiv - Navigation
1600to1604
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

Namensliste in Vorname un Zuname trennen

Namensliste in Vorname un Zuname trennen
18.01.2018 19:47:27
Kulo
Hallo Zusammen,
ich möchte gern eine Namensliste in Vor- und Nachname trennen.
Da ich nicht weiß, in welchem Format, "Name, Vorname" oder "Vorname Nachname", die Liste existiert, soll das Script das allein herausfinden.
Ich habe folgenden Code:

Sub NameTrennen()
Dim Name As String
Dim Vorname As String
Dim Nachname As String
Dim Zeile As Integer
For Zeile = 5 To Worksheets("Namen Sort.").Range("c2")
On Error Resume Next
Name = Worksheets("Namen Sort.").Cells(Zeile, 1)
If InStr(Name, ",") Then
Nachname = Left(Name, InStr(Name, ",") - 1)
Vorname = Replace(Name, Left(Name, InStr(Name, ",") + 1), "")
Worksheets("Namen Sort.").Cells(Zeile, 9).Value = Nachname
Worksheets("Namen Sort.").Cells(Zeile, 10).Value = Vorname
Else
Nachname = Mid(Name, InStrRev(Name, " ") + 1)
Vorname = Replace(Name, Nachname, "")
Worksheets("Namen Sort.").Cells(Zeile, 9).Value = Nachname
Worksheets("Namen Sort.").Cells(Zeile, 10).Value = Vorname
End If
Next
End Sub

Der Code macht auch alles, was ich will. Ich hätte nur gern gewußt, wie es "richtig programmiert" aussehen muss.
Vor allem ist mir meine "Replace"-Konstruktion sehr suspect, ebenso die Variablendim. Und es sieht auch alles so ziemlich Laienhaft aus.
Ich würde mich freuen, wenn sich jemand diesen Code mal anschauen kann und mir einen Kommentar hinterlässt.
Vielen Dank im Voraus und
Viele Grüße
Kulo

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namensliste in Vorname un Zuname trennen
18.01.2018 19:53:56
Werner
Hallo Kulo,
und wie soll ein Makro herausfinden was Vor- und was Nachname ist, wenn in deiner Zelle als Name z.B.: Herber, Walter steht?
Gruß Werner
AW: Namensliste in Vorname un Zuname trennen
18.01.2018 20:02:14
Kulo
Hallo Werner,
vielen Dank, dass Du Dich zu meinem Problem meldest.
Natürlich kann der Code das nicht herausfinden.
Ich gehe also davon aus, dass bei "Herber, Walter" alles vor dem Komma der Nachname ist, der Rest ist dann lt. meiner Def. :-) der Vorname. Ebenso gehe ich davon aus, dass bei "Walter Herber" alles bis zum ersten Leerzeichen von hinten der Nachname ist. Das was übrig bleibt, soll dann der Vorname sein. Natürlich gibt es da bei doppelten Nachnamen ohne Bindestrich wie bei "Schulze Böhm" oder "Luise von der Linde" kontrollbedarf.
Die Liste, die es zu trennen gilt, sollte dann also den normalen Schreibweisen, wenn ich das mal so bezeichnen darf, entsprechen.
Anzeige
AW: Namensliste in Vorname un Zuname trennen
19.01.2018 00:00:16
onur

Sub NameTrennen()
Dim Name As String
Dim Vorname As String
Dim Nachname As String
Dim Zeile As Integer
Dim ins
For Zeile = 5 To Worksheets("Namen Sort.").Range("c2")
'On Error Resume Next' Wozu das denn?
Name = Worksheets("Namen Sort.").Cells(Zeile, 1)
ins = InStr(Name, ",")
If ins > 0 Then
Nachname = Left(Name, ins - 1)
Vorname = Replace(Name, Left(Name, ins + 1), "")
Else
ins = InStr(Name, " ")
Vorname = Left(Name, ins - 1)
Nachname = Replace(Name, Left(Name, ins), "")
End If
Worksheets("Namen Sort.").Cells(Zeile, 9).Value = Nachname
Worksheets("Namen Sort.").Cells(Zeile, 10).Value = Vorname
Next
End Sub

Anzeige
AW: Namensliste in Vorname un Zuname trennen
19.01.2018 00:06:52
onur
Oder ohne Replace:
Sub NameTrennen()
Dim Name As String
Dim Vorname As String
Dim Nachname As String
Dim Zeile As Integer
Dim ins, l
For Zeile = 5 To Worksheets("Namen Sort.").Range("c2")
'On Error Resume Next' Wozu das denn?
Name = Worksheets("Namen Sort.").Cells(Zeile, 1)
ins = InStr(Name, ",")
l = Len(Name)
If ins > 0 Then
Nachname = Left(Name, ins - 1)
Vorname = Right(Name, l - ins - 1)
Else
ins = InStr(Name, " ")
Vorname = Left(Name, ins - 1)
Nachname = Right(Name, l - ins)
End If
Worksheets("Namen Sort.").Cells(Zeile, 9).Value = Nachname
Worksheets("Namen Sort.").Cells(Zeile, 10).Value = Vorname
Next
End Sub

Anzeige
AW: Namensliste in Vorname un Zuname trennen
19.01.2018 15:37:10
Kulo
Hallo Onur,
vielen Dank für Deinen Code.
On error resume next habe ich eingefügt, da ich ausschließen wollte, dass ein Fehler kommt, falls weder ein Komma noch ein Leerzeichen in Name vorhanden ist oder der Name gar "leer" ist.
Im Else-Zweig habe ich noch ins = InStr(Name, " ") durch ins = InStrRev(Name, " ") ersetzt, da ich ja davon ausgehe, dass beim Name ohne Komma alles bis zum ersten Lerrzeichen von hinten der Nachname sein soll.
Der Code sieht schon besser aus als meiner. Hab ich wieder was gelernt. ;-)
Also vielen Dank nochmals für deine Hilfe und
viele Grüße
Kulo
Anzeige

132 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige