Microsoft Excel

Herbers Excel/VBA-Archiv

Spalten nach Alphabet sortieren

Betrifft: Spalten nach Alphabet sortieren von: Markus
Geschrieben am: 01.10.2014 21:34:10

HAllo zusammmen,

ich habe eine Datei mit mehreren 1000 Zeilen - jeweils max. bestehend aus Einträgen in 10 Spalten (A bis J).

Hat jemand eine Idee, wie ich jede Zeile nach Alphabet sortieren kann.

Also statt

A Z D B F G T U S V
F K M N A

so

A B D F G S T U V Z
A F K M N

Wäre super, wenn mir jemand helfen könnt.

Vielen Dank!

Viele Grüße
Markus

  

Betrifft: AW: Spalten nach Alphabet sortieren von: Peter Feustel
Geschrieben am: 01.10.2014 21:40:40

Hallo Markus,

versuche es einmal so:

'
'    alle Zeilen (jede für sich) aufsteigend sortieren
'
Public Sub ZeilenSort()
 
Dim WkSh     As Worksheet
Dim lZeile   As Long
Dim iSpalte  As Integer

   Set WkSh = Worksheets("Tabelle2")
 
   With WkSh
      For lZeile = 1 To WkSh.Cells(Rows.Count, 1).End(xlUp).Row
         WkSh.Range(WkSh.Cells(lZeile, 1), WkSh.Cells(lZeile, _
            WkSh.Cells(lZeile, 256).End(xlToLeft).Column)).Sort _
         Key1:=WkSh.Cells(lZeile, 1), Order1:=xlAscending, _
         Header:=xlNo, OrderCustom:=1, _
         MatchCase:=False, Orientation:=xlLeftToRight
      Next lZeile
   End With
         
End Sub
Gruß Peter


  

Betrifft: AW: Spalten nach Alphabet sortieren von: Markus
Geschrieben am: 02.10.2014 06:12:30

Hall Peter,

ich bekomme beim Start einen Laufzeitfehler.

Markiert wird folgende Stelle im Makro:

WkSh.Range(WkSh.Cells(lZeile, 1), WkSh.Cells(lZeile, _
WkSh.Cells(lZeile, 256).End(xlToLeft).Column)).Sort _
Key1:=WkSh.Cells(lZeile, 1), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlLeftToRight


Hast Du noch eine Idee?`

Viele Grüße
Markus


  

Betrifft: AW: Spalten nach Alphabet sortieren von: Hajo_Zi
Geschrieben am: 02.10.2014 06:37:54

Hallo Markus,

es gibt Tabelle2 mit Daten?

GrußformelHomepage


  

Betrifft: AW: Spalten nach Alphabet sortieren von: Peter Feustel
Geschrieben am: 02.10.2014 10:21:50

Hallo Markus,

die Daten stehen bei mir im Tabellenblatt "Tabelle2" ab Zeile 1

Option Explicit

'
'    alle Zeilen (jede für sich) aufsteigend sortieren
'
Public Sub ZeilenSort()
 
Dim WkSh     As Worksheet
Dim lZeile   As Long
Dim iSpalte  As Integer
Dim lLetzte  As Long

   Set WkSh = Worksheets("Tabelle2") ' den Tabellenblattnamen ggf. anpassen!
 
   With WkSh
      lLetzte = .Columns("A:Z").Find("*", SearchDirection:=xlPrevious).Row
      For lZeile = 1 To lLetzte
         iSpalte = IIf(IsEmpty(Cells(lZeile, Columns.Count)), Cells(lZeile, _
            Columns.Count).End(xlToLeft).Column, Columns.Count)
         WkSh.Range(WkSh.Cells(lZeile, 1), WkSh.Cells(lZeile, iSpalte)).Sort _
            Key1:=WkSh.Cells(lZeile, 1), Order1:=xlAscending, _
            Header:=xlNo, OrderCustom:=1, _
            MatchCase:=False, Orientation:=xlLeftToRight
      Next lZeile
   End With
         
End Sub
Das Makro noch etwas an die jetzt größere Spaltenanzahl angepasst.

Gruß Peter


  

Betrifft: AW: jetzt mit Dokumentation von: Peter Feustel
Geschrieben am: 02.10.2014 11:14:28

Hallo Markus,

ich habe noch Dokumentation hinzugefügt.

Option Explicit

'
'    alle Zeilen (jede für sich) aufsteigend sortieren
'
Public Sub ZeilenSort()
 
Dim WkSh     As Worksheet
Dim lZeile   As Long
Dim iSpalte  As Integer
Dim lLetzte  As Long

   Set WkSh = Worksheets("Tabelle2") ' den Tabellenblattnamen ggf. anpassen!
 
   With WkSh
      lLetzte = .Columns("A:Z").Find("*", SearchDirection:=xlPrevious).Row
      For lZeile = 1 To lLetzte
         iSpalte = IIf(IsEmpty(.Cells(lZeile, Columns.Count)), .Cells(lZeile, _
            .Columns.Count).End(xlToLeft).Column, Columns.Count)
         .Range(.Cells(lZeile, 1), .Cells(lZeile, iSpalte)).Sort _
            Key1:=.Cells(lZeile, 1), Order1:=xlAscending, _
            Header:=xlNo, OrderCustom:=1, _
            MatchCase:=False, Orientation:=xlLeftToRight
      Next lZeile
   End With
         
End Sub
Gruß Peter


  

Betrifft: AW: jetzt mit Dokumentation von: Markus
Geschrieben am: 02.10.2014 12:01:51

Hallo Peter,

funktioniert bestens. :-)

Danke für Deine Hilfe!

Viele Grüße
Markus


  

Betrifft: AW: Spalten nach Alphabet sortieren von: Kathrin
Geschrieben am: 02.10.2014 12:34:12

Was hältst du hiervon:

Private Sub Workbook_Open()
    'Datei immer mit dem Tabellenblatt "Übersicht" öffnen
    Sheets("Übersicht").Select
    
    ' Sortieren von Arbeitsblättern
    Dim i As Integer, j As Integer, k As Integer
    k = ActiveWorkbook.Worksheets.Count
    For i = 1 To k
    For j = i To k
    If Worksheets(j).Name < Worksheets(i).Name Then
    Worksheets(j).Move Before:=Worksheets(i)
    End If
    Next j
    Next i
    ' Ende Sortieren von Arbeitsblättern´
      
    Sheets("Übersicht").Select
    Sheets("Übersicht").Move Before:=Sheets(1)
End Sub
Hier kannst du gleich noch ein Tabellenbklatt auswählen, welches immer als erstes geöffnet werden soll sowie z.B. ein bestimmtes Tabellenblatt nach dieser Sortierung an eine bestimmte Stelle setzen.


 

Beiträge aus den Excel-Beispielen zum Thema "Spalten nach Alphabet sortieren"