Microsoft Excel

Herbers Excel/VBA-Archiv

ohne Vornamen sortieren

Betrifft: ohne Vornamen sortieren von: Helmut
Geschrieben am: 24.07.2008 14:39:24

Hallo Excel-Profis,

wie kann ich eine Spalte nach Nachnamen sortieren, obwohl zuerst der abgekürzte Vorname in den Zellen steht?
z.B. so sehen meine Einträge aus:

H. Oberle
Ti. Müller
G. Gerstner
Sch. Kastner
usw.

Vielen Dank im voraus.
Gruß Helmut

  

Betrifft: AW: ohne Vornamen sortieren von: Reinhard
Geschrieben am: 24.07.2008 14:42:30

Hi Helmut,

Daten--Text in Spalten, nach Leerzechen trennen, dann nach der reinen Nachnamensspalte sortieren.

Gruß
Reinhard


  

Betrifft: AW: ohne Vornamen sortieren von: Helmut
Geschrieben am: 24.07.2008 15:12:24

Hi Reinhard,
diese Möglichkeit kenne ich, erscheint mir aber nicht komfortabel, wenn man das öfters machen muß und dazu immer wieder Platz für Spalten schaffen muß.
Gibt es vielleicht auch eine Lösung über VBA?
Nochmals Danke im voraus.
Helmut


  

Betrifft: AW: ohne Vornamen sortieren von: Klaus M.vdT.
Geschrieben am: 24.07.2008 15:25:36

Moin Helmut,

Ist das erste Leerzeichen von links ein definitves Kriterium für die Trennung von Vor - und Nachnamen?

Ich würd mir einmalig eine Spalte mit der Formel =TEIL(A2;FINDEN(" ";A2)+1;9^9) einrichten und immer nach dieser kopieren. Eine reine VBA Lösung währe bestimmt möglich, aber sehr aufwendig.

Wenns gar keine Hilfsspalte sein soll, füg doch die o.g. Formel per VBA in die Spalte IV ein, sortiere nach IV und lösche IV danach wieder ...

Grüße,
Klaus M.vdT.


  

Betrifft: AW: ohne Vornamen sortieren von: Roland Hochhäuser
Geschrieben am: 24.07.2008 15:27:56

Hallo Helmut,

den betreffenden Bereich markieren und folgendes Makro drüber laufen lassen:

Sub TextNurNachLeerzeichen()
Dim rng As Range
For Each rng In Selection
    With rng
        .Value = Right$(.Value, Len(.Value) - InStr(1, .Value, " "))
    End With
Next
End Sub



War´s das?

Gruß
Roland Hochhäuser


  

Betrifft: AW: ohne Vornamen sortieren von: Helmut
Geschrieben am: 24.07.2008 15:35:19

Hallo Roland,

das ist eine super-Lösung, so habe ich mir das gewünscht.
Wo lernt man solch fortgeschrittenen Code?

Vielen Dank nochmal.
Gruß Helmut


  

Betrifft: AW: ohne Vornamen sortieren von: chris58
Geschrieben am: 26.07.2008 10:04:42

Hallo !
ich habe diesen Supercode entdeckt. Doch geht es, das trotz allem der Name vor dem Sortierkriterium erhalten bleibt. Denn wenn man den code drüberlaufen läßt, dann verschwindet der Vorname bzw. die Daten vor dem Suchkriterium.
Geht das ?
chris


  

Betrifft: AW: ohne Vornamen sortieren von: Tino
Geschrieben am: 26.07.2008 11:01:15

Hallo,
hier mal eine Möglichkeit.

Dieser Code Erstellt in der letzen Spalte eine Formel um den Namen zu separieren.
Danach wird nach dieser Spalte Sortiert und zum Schluss wird diese Spalte wieder gelöscht.
In diesem Code wird davon ausgegangen, dass die Namen in Spalte A ab Zeile 2 stehen.

Sub Sortiere()
Dim Bereich As Range

Set Bereich = Range("A2", Cells(Rows.Count, 1).End(xlUp)). _
                Offset(0, Columns.Count - 1)

    Bereich.FormulaR1C1 = _
        "=IF(ISERROR(FIND("" "",RC1)),IF(ISERROR(FIND" & _
        "(""."",RC1)),"""",RIGHT(RC1,LEN(RC1)-FIND(""."",RC1)" & _
        ")),RIGHT(RC1,LEN(RC1)-FIND("" "",RC1)))"
    
    Range("2:" & Cells(Rows.Count, 1).End(xlUp).Row).Sort _
    Key1:=Cells(2, Columns.Count), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

    Bereich.ClearContents
    
Set Bereich = Nothing
End Sub




Gruß Tino

www.VBA-Excel.de




  

Betrifft: AW: ohne Vornamen sortieren von: chris
Geschrieben am: 26.07.2008 19:20:24

Danke, vorerst, doch wo muß ich änderen, wenn die Namen in Spalte B stehen. Ich habe von A2 Auf B2 geändert, doch das scheint zuwenig. Trau mich nicht den weiteren Code anzufassen, um diesen nicht ganz zu zerstören. Kannst mir bitte sagen, wo ich was, ändern muß.
Danke
chris


  

Betrifft: AW: ohne Vornamen sortieren von: Tino
Geschrieben am: 26.07.2008 20:07:53

Hallo,
ohne zu testen, sollte so gehen.

Sub Sortiere()
 Dim Bereich As Range
 
 Set Bereich = Range("B2", Cells(Rows.Count, 2).End(xlUp)). _
                 Offset(0, Columns.Count - 2)
 
     Bereich.FormulaR1C1 = _
         "=IF(ISERROR(FIND("" "",RC2)),IF(ISERROR(FIND(""."",RC2)),""""," & _
         "RIGHT(RC2,LEN(RC2)-FIND(""."",RC2))),RIGHT(RC2,LEN(RC2)-FIND("" "",RC2)))"
     
     Range("2:" & Cells(Rows.Count, 1).End(xlUp).Row).Sort _
     Key1:=Cells(2, Columns.Count), Order1:=xlAscending, Header:=xlGuess, _
     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
     DataOption1:=xlSortNormal
 
     Bereich.ClearContents
     
 Set Bereich = Nothing
 End Sub



Bin jetzt auf einer Party, bin erst morgen wieder Online.
Bei Problemen, kann bestimmt auch ein anderer aushelfen.


Gruß Tino

www.VBA-Excel.de




  

Betrifft: AW: ohne Vornamen sortieren von: chris
Geschrieben am: 26.07.2008 21:22:14

Hallo ..........also der Code, da verschwindet alles und kommt bei zeile 5000 wieder raus, aber ganz anders
chris


  

Betrifft: AW: ohne Vornamen sortieren von: Tino
Geschrieben am: 27.07.2008 09:50:52

Hallo,
so aber jetzt passt der Code und Sortiert die Namen ab B2 bis zur letzten Zelle in B

Sub Sortiere()
 Dim Bereich As Range

 Set Bereich = Range("B2", Cells(Rows.Count, 2).End(xlUp)). _
                 Offset(0, Columns.Count - 2)
 
     Bereich.FormulaR1C1 = _
    "=IF(ISERROR(FIND("" "",RC2)),IF(ISERROR(FIND(""."",RC2)),""""," & _
    "RIGHT(RC2,LEN(RC2)-FIND(""."",RC2))),RIGHT(RC2,LEN(RC2)-FIND("" "",RC2)))"
     
     Range("2:" & Cells(Rows.Count, 2).End(xlUp).Row).Sort _
     Key1:=Cells(2, Columns.Count), Order1:=xlAscending, Header:=xlGuess, _
     OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
     DataOption1:=xlSortNormal
 
     Bereich.ClearContents
     
 Set Bereich = Nothing
 End Sub



Gruß Tino

www.VBA-Excel.de




  

Betrifft: AW: ohne Vornamen sortieren von: Roland Hochhäuser
Geschrieben am: 27.07.2008 09:57:23

Hallo chris,

wenn es konkret um Werte aus (nur) einer Spalte geht, folgender Ansatz: die Selection in die 1. Spalte eines zweispaltigen Array geben, die 2. Spalte des Arrays mit dem gekürzten String füllen, das komplette Array nach der 2. Spalte sortieren und dann die erste Array-Spalte in das Blatt zurückschreiben. Dürfte auch mit Bubble-Sort flotter gehen als ein Formelansatz.

Gruß
Roland Hochhäuser


 

Beiträge aus den Excel-Beispielen zum Thema "ohne Vornamen sortieren"