Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1480to1484
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

Namen heraus

Namen heraus
16.03.2016 21:20:42
jorgi
Guten Abend,
wir haben eine alte Liste die sehr "doof" gemacht wurde.
Spalte A
Hans Klaus565766 x
Peter Maier 78766
Karl König w x
Michi Meier87779 w x
Ich möchte in der Spalte B
nur die Namen haben.
z.B.
SpalteA..................SpalteB
Hans Klaus565766 x.......Hans Klaus
Wer kann mir helfen?
Danke
Jorgi

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen heraus
16.03.2016 21:51:06
Spenski
Hi versuch mal das hier, ist aber mit Hilfsspalte
B1=WENNFEHLER(LINKS(K1;VERWEIS(1;1/TEIL(K1;99-ZEILE(1:98);1);98-ZEILE(1:98)));K1)
K1=LINKS(A1;SUCHEN(" ";A1;SUCHEN(" ";A1)+1)-1)
und dann beides runterkopieren. Spalte K ist die Hilfsspalte.
Achtung. Funktioniert nicht bei Doppelvornamen: zb. Hans Klaus Mayer545 c 2 wird nicht gehen.
Feedback wäre nett :D
gruss

da MÜSSEN aber 2 Leerzeichen Vorkommen
17.03.2016 08:37:06
WF
Hi,
ohne Hilfsspalte folgende Arrayformel:
{=LINKS(A1;MIN(WENNFEHLER(FINDEN("##";WECHSELN(A1;" ";"##";2));99);WENNFEHLER(VERGLEICH(1; ISTZAHL(TEIL(A1;ZEILE(1:99);1)*1)*1;0);99))-1) }
runterkopieren
WF

Anzeige
kanns Du aber leicht reparieren
17.03.2016 08:53:48
WF
ändere K1 in:
=LINKS(A1;SUCHEN(" ";A1&" ";SUCHEN(" ";A1)+1)-1)
WF

Danke für die hilfe
18.03.2016 09:20:29
jorgi
Ich nehme die "Suche" Formel
Danke

AW: Namen heraus
16.03.2016 22:31:19
Peter
Hallo Jörgi,
als VBA Lösung so - wobei davon ausgegangen wird, dass es ein Überschrift gibt, die Daten also in Zeile 2 im Tabellenblatt Tabelle1 stehen.
Option Explicit
Public Sub Separieren()
Dim lZeile    As Long
Dim vTemp     As Variant
Dim iTemp     As Integer
Dim iLaenge   As Integer
Dim sZeichen  As String
Dim sText     As String
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen!
.Range("B2:B" & .Cells(.Rows.Count, 1).End(xlUp).Row).ClearContents
For lZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If Trim$(.Range("A" & lZeile).Value)  "" Then
vTemp = Split(.Range("A" & lZeile).Value, " ")
For iTemp = LBound(vTemp) To UBound(vTemp)
vTemp(iTemp) = Trim$(vTemp(iTemp))
If Not IsNumeric(Left(vTemp(iTemp), 1)) Then
sText = ""
For iLaenge = 1 To Len(vTemp(iTemp))
sZeichen = Mid(vTemp(iTemp), iLaenge, 1)
If Not IsNumeric(sZeichen) Then
If sText = "" Then
sText = sZeichen
Else
sText = sText & sZeichen
End If
Else
Exit For
End If
Next iLaenge
If Len(sText) > 1 Then
If .Range("B" & lZeile).Value = "" Then
.Range("B" & lZeile).Value = sText
Else
.Range("B" & lZeile).Value = .Range("B" & lZeile).Value & _
" " & sText
End If
End If
End If
Next iTemp
End If
Next lZeile
End With
Application.ScreenUpdating = True
End Sub

Gruß Peter

Anzeige
VBA-UDF-Formel-Lösung
17.03.2016 00:41:54
Luc:-?
Mit meinen UDFs sind 2 Lösungen möglich, Jorgi,
eine ebenfalls nicht mehr-als-ein-(vor-)name-feste relativ unaufwändige→
B2[:B5]:=VJoin(Splint(MaskOn(A2;"alf");;1;2))
…und eine etwas aufwändigere sicherere (wenn man alle möglichen nachstehenden irrelevanten Leerzeichen-Buchstaben-Kombinationen aufführt):
B2[:B5]:=INDEX(SplitVx(MaskOn(A2;"alf");{" x"." w"});1)
Die Pgmm der 4 UDFs sind mittels RECHERCHE(-Button) im Archiv auffindbar.
Feedback nicht unerwünscht! Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Namen heraus
17.03.2016 10:16:36
Daniel
Hi
was ist denn die genaue Regel, wo getrennt werden soll?
ich aus den Beispielen entnehme ich:
vor der ersten Ziffer oder vor dem ersten Einzelbuchstaben.
dann ggf so:
=GLÄTTEN(LINKS(A1;MIN(WENNFEHLER(FINDEN(ZEILE($A$1:$A$10)-1;A1);999);WENNFEHLER(SUCHEN(" ? ";A1&" "); 999))-1)) 
das ganze ist eine Matrixformel, dh die Eingabe muss immer mit STRG+SHIFT+ENTER abgeschlossen werden.
Gruß Daniel

AW: Namen heraus
17.03.2016 12:54:13
Peter
Hallo Jorgi,
hier noch eine elegante Lösung mit regular Expressions
Option Explicit
'    bei den Verweisen muss ggf. Microsoft VBSript Regular Expressions 5.5 aktiviert sein
Public Sub Namen_Extrakt()
Dim RegEx   As Object
Dim lZeile  As Long
Dim vTemp   As Variant
Dim iTemp   As Integer
Dim sText   As String
Set RegEx = CreateObject("VBScript.Regexp")
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen!
.Range("B2:B" & .Cells(.Rows.Count, 1).End(xlUp).Row).ClearContents
For lZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
vTemp = Split(.Range("A" & lZeile).Value, " ") ' am Leerzeichen trennen
For iTemp = 0 To UBound(vTemp)
'              nur alle 29 Groß-/Klein-Buchstaben, das ß und den Bindestrich zulassen
With RegEx
.Pattern = "[^a-zA-ZäöüßÄÖÜ-]"
.Global = True
sText = .Replace(vTemp(iTemp), "") ' ungewünschte Zeichen löschen
End With
If Len(sText) > 2 Then ' nur Wörter länger 2 Stellen übernehmen
If .Range("B" & lZeile).Value = "" Then
.Range("B" & lZeile).Value = sText ' den ersten Namensteil übertragen
Else                                 ' alle weiteren Namensteile übergeben
.Range("B" & lZeile).Value = .Range("B" & lZeile).Value & " " & sText
End If
End If
Next iTemp
Next lZeile
End With
Application.ScreenUpdating = True
Set RegEx = Nothing ' die Ressource wieder freigeben
End Sub

Gruß Peter

Anzeige
AW: Namen heraus
17.03.2016 22:07:23
Piet
Hallo Jorgi
ich sehe es gibt bereits einige Lösungen. Ist die Sache damit erledigt?
Wenn nicht könnten wir mal ein "doofes Makro" für doofe Tabellen probieren.
mfg Piet

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige