Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Sortieren mit Leerzeilen

Sortieren mit Leerzeilen
22.08.2008 08:56:45
dschierz
Hallo,
ich habe eine Frage wieder zu dem schon oft behandelten Thema "Sortieren mit VBA"
Bisher habe ich Beiträge zum Problem gelesen wo die Leerzeilen entfernt wurden. Ich hätte gerne die Leerzeilen (Leerzellen) wegen der Übersichtlichkeit beibehalten. Mit dem Macrorecorder geht es auch, aber es kommt ein gewaltiger Code zustande.
Also noch einmal, Ich hätte gerne einen Zellbereich sortiert, die leeren Zellen und die Formatierung (Füllfarbe der Zellen) beibehalten.
Vielen Dank im Voraus
Dietmar Schierz

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren mit Leerzeilen
22.08.2008 09:59:00
fcs
Hallo Dietmar,
Leerzeilen in Exceltabellen, die man sortieren möchte sind etwas was du schnellstens vergessen soltest.
Einfacher ist es Zeilen mit bedingter Formatierung hervorzuheben, wenn dies die Lesbarkeit einer Tabelle erleichtern soll. Diese funktioniert dann auch unabhängig von der Sortierung, wenn man es richtig macht.
Was noch verhältnismäßig einfach per Makro umgesetzt werden kann ist das Einfügen und ggf. Formatieren von Leerzeilen in regelmäßigen Abständen nach dem Sortieren.
Beispiel-Makro:

Sub Sortieren()
'Bereich sortieren und Leerzeilen einfügen
Dim wks As Worksheet, rngBereich As Range, lngZeile As Long, lngI As Long
Const lngSchritt As Long = 5 'Zeilenabstand für Leerzeilen
On Error GoTo Fehler
Set wks = ActiveSheet
With wks
'Sortierbereich (Zelle A1 bis letzte Zeile Spalte A inkl. Spalte G)
Set rngBereich = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 6))
'Sortieren
With rngBereich
'leere Zellen ohne Füllfarbe
.Cells.SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = xlColorIndexNone
'Bereich sortieren
.Sort key1:=.Range("A1"), order1:=xlAscending, _
Key2:=.Range("C1"), order2:=xlAscending, _
Header:=xlYes
End With
'letzte datenzeile Spalte A
lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
'Leerzeilen einfügen
For lngI = 1 To Int((lngZeile - rngBereich.Row) / lngSchritt)
'Einfüge-Zeilennummer berechnen
lngZeile = rngBereich.Row + lngI * lngSchritt + lngI
'Zeile einfügen
.Rows(lngZeile).Insert
'Leerzeile einfärben (6 = gelb)
.Range(.Cells(lngZeile, 1), .Cells(lngZeile, 7)).Interior.ColorIndex = 6
Next
End With
'Fehlerbehandlung
Fehler:
If Err.Number  0 Then
Select Case Err.Number
Case 1004 'Falls im bereich keine Leerzellen vorhanden sind
Resume Next
Case Else
MsgBox "Fehler-Nr: " & Err.Number & vbLf & Err.Description
End Select
End If
End Sub


Gruß
Franz

Anzeige
AW: Sortieren mit Leerzeilen
26.08.2008 06:43:17
Marc
Vielleicht kommst du ja weiter, wenn du erst den komplette Bereich sortierst und dann per Makro jeweils eine Zeile einfügst. Dann hättest du auch jeweils ne Leerzeile.
Das kannst du natürlich noch mit Bedingungen verknüpfen oder Farben, wie du willst.
Gruß, Marc
;
Anzeige
Anzeige

Infobox / Tutorial

Sortieren mit Leerzeilen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel einen Zellbereich zu sortieren und gleichzeitig Leerzeilen beizubehalten, kannst Du ein Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und gehe zu dem Arbeitsblatt, das Du sortieren möchtest.

  2. Drücke Alt + F11, um den VBA-Editor zu öffnen.

  3. Klicke auf „Einfügen“ und wähle „Modul“, um ein neues Modul zu erstellen.

  4. Kopiere den folgenden Code in das Modul:

    Sub Sortieren()
       'Bereich sortieren und Leerzeilen einfügen
       Dim wks As Worksheet, rngBereich As Range, lngZeile As Long, lngI As Long
       Const lngSchritt As Long = 5 'Zeilenabstand für Leerzeilen
       On Error GoTo Fehler
       Set wks = ActiveSheet
       With wks
           'Sortierbereich definieren
           Set rngBereich = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 6))
           'Sortieren
           With rngBereich
               .Sort key1:=.Range("A1"), order1:=xlAscending, Header:=xlYes
           End With
           'Leerzeilen einfügen
           lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row
           For lngI = 1 To Int((lngZeile - rngBereich.Row) / lngSchritt)
               lngZeile = rngBereich.Row + lngI * lngSchritt + lngI
               .Rows(lngZeile).Insert
               .Range(.Cells(lngZeile, 1), .Cells(lngZeile, 7)).Interior.ColorIndex = 6 'Leerzeile einfärben
           Next
       End With
       Exit Sub
    Fehler:
       MsgBox "Fehler-Nr: " & Err.Number & vbLf & Err.Description
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus, indem Du auf „Entwicklertools“ und dann auf „Makros“ klickst. Wähle „Sortieren“ und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Fehler-Nr: 1004: Dieser Fehler tritt auf, wenn im Sortierbereich keine Leerzellen vorhanden sind. Stelle sicher, dass Dein Bereich korrekt definiert ist und Leerzellen enthält.
  • Sortierung funktioniert nicht: Überprüfe, ob Du den richtigen Bereich zum Sortieren ausgewählt hast. Der Bereich sollte die gesamte Datenreihe umfassen.
  • Leerzeilen werden nicht eingefügt: Achte darauf, dass lngSchritt richtig eingestellt ist, um die gewünschten Abstände zwischen den Leerzeilen zu erhalten.

Alternative Methoden

Falls Du keine Makros verwenden möchtest, gibt es alternative Methoden:

  • Bedingte Formatierung: Du kannst in Excel Leerzeilen durch bedingte Formatierung hervorheben, wodurch die Übersichtlichkeit verbessert wird, ohne die Zeilen zu sortieren.
  • Manuelles Einfügen: Sortiere zuerst die Daten und füge dann manuell Leerzeilen ein, um die Struktur beizubehalten.

Praktische Beispiele

Hier ein Beispiel, wie Du Leerzeilen nach jeder fünften Zeile einfügen kannst:

  • Datenbereich: Angenommen, Du hast Daten in den Zellen A1 bis G20.
  • VBA-Anpassung: Ändere die Konstante lngSchritt auf 5, um nach jeder fünften Zeile eine Leerzeile einzufügen.

Das Makro wird dann automatisch nach der Sortierung Leerzeilen einfügen, um die Struktur zu bewahren.


Tipps für Profis

  • Makros speichern: Speichere Deine Excel-Datei als „.xlsm“ (Makro-fähige Arbeitsmappe), um Deine Makros zu behalten.
  • Verknüpfungen nutzen: Wenn Du oft Daten sortierst, kannst Du Tastenkombinationen für Deine Makros festlegen, um den Prozess zu beschleunigen.
  • Daten verbinden: Verwende excel zeilen verknüpfen für sortierung, um Daten zu organisieren und die Sortierung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich Leerzeilen in meiner Outlook-Signatur entfernen?
Verwende die Formatierungsoptionen in Outlook, um überflüssige Leerzeilen am Anfang zu entfernen.

2. Kann ich auch in Word Zeilen sortieren?
Ja, Word bietet ähnliche Funktionen zum Sortieren von Tabellen, die Du über das Menü „Tabellentools“ aufrufen kannst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige