3.8k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo

hab da mal ne frage wie kriege ich vor und zuname getrennt wenn es zb. so da steht
christianmüller?
christian müller kann ich problemlos über daten-text in spalten trennen.
aber blöderweise sind beide vorhanden einmal mit leerzeichen und einmal ohne
danke für die infos :)))))

13 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo,

aus reinem Interesse habe ich mit folgendem Makro (was sich sicher noch optimieren lässt), folgendes getestet.

Spalte A Datenbank mit 36935 Vornamen (aus @ nighty's Download)
Spalte C 870 Vor- u. Nachnamen ohne Trennzeichen
In den Spalten D und E liefert das Makro nach 65 sec die gewollten Trennungen.

Vielleicht hat noch jemand Interesse das zu beschleunigen?

Option Explicit

Sub test()
Dim rngC As Range, intI As Integer, strT As String
Range("G1").Value = "Makro läuft"
Application.ScreenUpdating = False
For Each rngC In Range("C2:C871")
For intI = 1 To Len(rngC)
strT = Left(rngC, intI)
If WorksheetFunction.CountIf(Range("A:A"), strT) Then
rngC.Offset(0, 1) = strT
rngC.Offset(0, 2) = WorksheetFunction.Substitute(rngC, strT, "")
End If
Next
Next
Application.ScreenUpdating = True
Range("G1").Value = "Makro beendet"
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

schöne lösung :-)

gruss nighty
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
[quote][quote][quote][quote]Hallo noch mal,

unter der Bedingung, dass die Namen in Spalte C immer aus Vor-u. Nachname bestehen und unter der Annahme, dass jeder Nachname mindestens 3 Zeichen hat, kann der Code wie folgt verändert werden

statt:
For intI = 1 To Len(rngC)

Schleife um 3 Durchläufe kürzen
For intI = 1 To Len(rngC) - 3

Das verringert die Macrolaufzeit unter meinen oben genannten Bedingungen um 20 sec.

Gruß
Rainer
...