Excel: String splitten ohne Makro?

Dieses Thema Excel: String splitten ohne Makro? im Forum "Microsoft Office Suite" wurde erstellt von Ace_NoOne, 6. Sep. 2005.

Thema: Excel: String splitten ohne Makro? Hallo zusammen, derzeit arbeite ich an einer Excel-Liste, die u.a. eine große Anzahl an Namen enthält. Allerdings...

  1. Hallo zusammen,

    derzeit arbeite ich an einer Excel-Liste, die u.a. eine große Anzahl an Namen enthält. Allerdings stehen Vor- und Nachnamen in einer Zelle. Nun müssten diese Namen getrennt werden, sodass man eine Spalte für Vor- und eine für Nachnamen erhält.
    Gibt es dafür eine vorgefertigte Funktion, sodass ich in die entsprechende Zelle nur...
    Code:
    =split(A:A;  ; 1)
    ... eingeben muss?
    (Annahme: Spalte A enthält die Namen in der Form [Nachname][leerzeichen][Vorname]; das dritte Argument der Split-Funktion gibt den auszugebenden Teilstring an)

    Mit Makros möchte ich nicht arbeiten, da ich da jedes Mal das entsprechende Makro starten müsste - es sei denn, ich könnte die Makro-Funktion wie oben definieren und dann auch so im Arbeitsblatt einbinden... !?

    Im Voraus besten Dank!
     
  2. Hallo Ace_NoOne,

    ich hab dir mal ein Beispiel zusammengestellt, wie du deine Splitt-Funktion als Makro erstellen  und dann als Formel weiter benutzen kannst.



    Funktion (Makro) für die Verwendung in Formeln erstellen:

    a) deine Excel-Arbeitsmappe öffnen
    b) VB-Editor öffnen mit Alt+F11
    c) mit rechter Maustaste im Projekt-Fenster  VBAProject(Dateiname) selektieren
       -> Einfügen -> Modul
      (es öffnet sich ein Modul-Fenster)
    d) den Makro per copy and paste in dieses Modulfenster kopieren


    Code:
    Function GibNachname(r As Range) As String
    
      Dim s As String, s_Vorname As String, s_Nachname As String
    
      If r.Count <> 1 Then
        GibNachname = #RANGE DARF NUR EINE ZELLE UMFASSEN
        Exit Function
      End If
      
     ->kompletten Namen holen, Leerzeichen am Anfung und am Ende abschneiden
      s = Trim(r.Value)
      
      Call NamenZerlegen(s, s_Vorname, s_Nachname)
      
      GibNachname = s_Nachname
      
    End Function
    '******************************************************************
    Function GibVorname(r As Range) As String
    
      Dim s As String, s_Vorname As String, s_Nachname As String
    
      If r.Count <> 1 Then
        GibVorname = #RANGE DARF NUR EINE ZELLE UMFASSEN
        Exit Function
      End If
      
     ->kompletten Namen holen, Leerzeichen am Anfung und am Ende abschneiden
      s = Trim(r.Value)
      
      Call NamenZerlegen(s, s_Vorname, s_Nachname)
      
      GibVorname = s_Vorname
      
    End Function
    '******************************************************************
    Private Function NamenZerlegen(s As String, _
                                   s_Vorname As String, _
                                   s_Nachname As String)
      Dim pos As Long, pos1 As Long
      
     ->letztes Leerzeichen suchen
      pos = 0: pos1 = 0
      Do
        pos1 = InStr(pos1 + 1, s,  )
        If pos1 = 0 Then Exit Do
        pos = pos1
      Loop
      
     ->Leerzeichen vorhanden ?
      If pos = 0 Then
       ->nein -> Name = Nachname, kein Vorname
        s_Nachname = s
        s_Vorname = 
      Else
       ->ja -> Namen trennen
        s_Vorname = Left(s, pos - 1)
        s_Nachname = Right(s, Len(s) - pos)
      End If
    End Function
    e) Speichern mit Alt+S
    f) VB-Editor schliessen mit Alt+Q

    Jetzt steht dir GibVorname und GibNachname für Formeln zur Verfügung.




    Formel erstellen:

    Annahme:
      - der erste Name steht in A2
      - Vorname soll in B2 erscheinen
      - Nachname soll in C2 erscheinen

    1) Gehe in die Zelle B2
    2) schreibe ein Gleichheitszeichen
       (es wird in der Symbolleiste die Drop-Down-Auswahl für Funktionen angezeigt)
    3) im der Drop-Down-Auswahl für Funktionen wählst du
       'weitere Funktionen...'
       (das Fenster->Funktionen einfügen' öffnet sich
    4) im Fenster->Funktionen einfügen' wählst Du->Benutzerdefiniert'
       (im Fenster->Funktion:' GibVornamen
    5) GibVornamen mit einem Doppelklick auswählen
       (Es öffnet sich ein Formel-Fenster der Funktion GibVornamen
        in dem der Bereich eingegeben werden muß.
    6) Den Bereich A2 eingeben oder auf das Symbol zur Bereichsmarkierung
        klicken und den Bereich mit der Maus selektieren)
    7) Ende-Button

    Die Schritte 1 - 7 für GibNachnamen in Zelle C2 wiedeholen

    Dann  B2 und C2 markieren und soweit Namen vorhanden sind, nach unten ziehen.

    Fertig :)


    Der Makro berücksichtigt, dass es mehrere Vornamen in einem Namen geben kann.
    Er gibt jeweils den letzten durch Leerzeichen getrennten Namensteil als Nachnamen
    und den Rest als Vornamen.

    Wenn kein Leerzeichen enthalten ist, wird der Name als Nachname behandelt.

    Gruß Matjes :)
     
  3. Wow, erstmal vielen Dank für die Mühe!

    Allerdings bleibe ich beim Einbinden der Funktion hängen - obwohl deine Anleitung ja eigentlich idiotensicher ist: Bei mir erscheint keine derartige Auswahlliste (Schritt 2 bzw. 3), sodass ich auch keine benutzerdefinierten Funktionen einfügen kann!? Ich arbeite mit Excel 2002 (kann's am Montag auf der Arbeit aber mal mit Excel 2003 versuchen).
    Ich habe versucht, die Funktion auf anderem Wege einzubinden, bin aber kläglich gescheitert (weder in der Excel- noch in der VBA-Hilfe konnte ich eine Antwort finden)... :(
     
  4. Hallo Ace_NoOne,

    ist mein Bug  ;) Bin von meinen Einstellungen ausgegangen.

    Die Drop-Down-Liste findest Du auf der Format-Symbolleiste.
    (Haken vor Ansicht->Sybolleisten->Format)

    Gruß Matjes :)
     
  5. Oh je, bin ich so dumm! ::)
    Im Feld Funktion einfügen war ich ja bereits (und zwar seeehr lange... ;) ) - nur konnte ich dort keine Schaltfläche bzw. keinen Eintrag zum Einfügen einer benutzerdefinierten Funktion finden. Das ist aber auch nicht notwendig, denn deine Funktionen stehen in der Liste schon drin!
    Allerdings hatte ich auch versucht, deine beiden Formeln per manueller Eingabe (also ohne Menüauswahl) einzubinden - da bekam ich dann aber den #NAME?-Fehler. Einen Tippfehler halte ich für ausgeschlossen, dazu habe ich's zu oft versucht (und zwar auch seeehr lange... :D ).

    Naja, ist ja jetzt egal - es klappt jedenfalls perfekt! (besonders begeistert mich übrigens, dass bereits im ersten Release an die Unterstützung mehrerer Vornamen gedacht wurde :) )
     
Die Seite wird geladen...

Excel: String splitten ohne Makro? - Ähnliche Themen

Forum Datum
Excel-Feature gesucht Microsoft Office Suite 11. Okt. 2016
Excel Tabelle Werte zu ordnen Microsoft Office Suite 23. Sep. 2016
Excel: Bereiche auf 'leer' Überprüfen Microsoft Office Suite 15. Sep. 2016
Import Datensatz inkl = und - Zeichen in Excel/Libre CALC Software: Empfehlungen, Gesuche & Problemlösungen 20. Mai 2016
Bestimmter User kann seine Excel Dateien nicht mehr direkt öffnen Software: Empfehlungen, Gesuche & Problemlösungen 16. Apr. 2016