AW: Leere Zeilen und Spalten löschen
11.03.2004 23:22:12
cessius
Hallo Pia
hier ein Auszug aus einem wöchentlichen kostenlosen e-mail-Abo von smart tools, zu beziehen unter http://www.add-in-world.com/katalog/. Sehr empfehlendwert.
Leerzeilen in Ihren Tabellen löschen oder ausblenden
Versionen: Excel 97, 2000 und 2002/XP
Wenn Sie Tabellen wir den Ausdruck oder die Weitergabe im Team aufbereiten, stehen Sie immer wieder vor dem Problem, unerwünschte Leerzeilen entfernen zu müssen. Dabei kann es sich entweder um komplett leere Zeilen handeln oder auch um noch nicht komplett ausgefüllte Positionen, die auf dem Ausdruck zunächst nicht erscheinen sollen. Excel bietet standardmäßig keine Funktion, um die Ausgabe von Leerzeilen zu verhindern, aber wir möchten Ihnen im Folgenden einige nützliche Tipps und Techniken vorstellen, mit deren Hilfe Sie dieses Manko beheben können.
Gehen wir zunächst einmal davon aus, dass Sie eine umfangreiche Liste mit Budgetpositionen erstellt haben. Zurzeit liegen noch nicht alle Beträge vor, so dass Sie eine Liste erstellen möchten, auf der nur die vollständigen Zeilen zu sehen sind. Die Beträge befinden sich in unserem Beispiel in Spalte D, so dass Sie zunächst alle Zeilen ausblenden möchten, die in Spalte D keinen Eintrag aufweisen. Auf Wunsch geht das manuell mit der folgenden Technik:
1. Markieren Sie Spalte D über die gesamte Länge Ihrer ausgefüllten Liste. Also zum Beispiel: D4:D350.
2. Drücken Sie Strg+G oder wählen Sie das Menü Bearbeiten-Gehe zu an.
3. Klicken Sie auf Inhalte.
4. Markieren Sie die Option Leerzellen und bestätigen Sie mit Ok.
5. Excel während daraufhin alle leeren Zellen in Spalte D Ihrer Liste aus. Sie brauchen nur noch das Menü Format-Zeile-Ausblenden anzuwählen und schon sind alle unerwünschten Zeilen aus Ihrer Liste verschwunden. Sie können die Tabelle daraufhin ausdrucken und die Zeilen dann wieder sichtbar machen, indem Sie Ihre Liste markieren und Format-Zeile-Einblenden anwählen.
Übrigens: Wenn Sie die Zeilen mit leeren Einträgen nicht nur ausblenden, sondern komplett entfernen möchten, können Sie anstelle des Ausblenden-Menüs auch Bearbeiten-Zellen löschen anwählen, die Option Ganze Zeile aktivieren und mit Ok bestätigen.
Wenn Sie diese Arbeitsschritte nur ab und zu ausführen müssen, ist es gut, diese Technik zu kennen. Bei regelmäßiger Nutzung bietet sich der Einsatz eines entsprechenden Makros an, das Sie beispielsweise einer Schaltfläche zuweisen. Das folgende Makro können Sie starten, nachdem Sie die Spalte in Ihrer Liste markiert haben, auf deren Grundlage leere Zellen bestimmt und die entsprechenden Zeilen dann ausgeblendet werden sollen:
Sub procZeilenVerdecken()
intAnzahl = Selection.Rows.Count
For I = 1 To intAnzahl
If ActiveCell = "" Then
ActiveCell.Rows.Hidden = True
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Next I
End Sub
Und so sieht das Makro aus, das die gefundenen Zeilen löscht:
Sub procZeilenLoeschen()
intAnzahl = Selection.Rows.Count
For I = 1 To intAnzahl
If ActiveCell = "" Then
Selection.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Next I
End Sub
Die Funktionsweise ist schnell erklärt: Im ersten Schritt wird über "Selection.Rows.Count" festgestellt, wie viele Zeilen die aktuelle Markierung umfasst. In einer Schleife durchlaufen wir dann die komplette markierte Spalte Zelle für Zelle und prüfen jeweils, ob der Inhalt leer ist oder nicht. Danach wird die Markierung über "ActiveCell.Offset" um eine Zeile nach unten gesetzt.
Etwas komplizierter wird die Angelegenheit, wenn Sie nur die Zeilen aus Ihrer Liste löschen möchten, die wirklich komplett leer sind. In diesem Fall hilft die Funktion Inhalte auswählen nicht mehr weiter und Sie können nur auf ein Makro zugreifen. Unsere Lösung dazu sieht folgendermaßen aus:
Sub procLeereMarkZeilenVerdecken()
lngAnzahl = Selection.Rows.Count
For I = 1 To lngAnzahl
If Application.CountA(Selection.Rows(I)) = 0 Then
Selection.Rows(I).Hidden = True
End If
Next I
End Sub
In diesem Fall gehen wir davon aus, dass Sie vor dem Aufruf des Makros die komplette Liste markiert haben. Wir ermitteln dann die Anzahl der Zeilen und gehen den gesamten Bereich Zeile für Zeile durch. Dabei prüfen wir für jede Zeile, ob Sie komplett leer ist oder nicht, indem wir die Funktion "CountA" einsetzen. Sie entspricht der deutschen Tabellenfunktion "Anzahl2" und liefert die Anzahl der ausgefüllten Zellen in einem Bereich. Nur wenn das Ergebnis 0 ist, ist die Zeile wirklich komplett leer und sie wird ausgeblendet. Möchten Sie die leeren Stellen stattdessen löschen, sieht das Makro folgendermaßen aus:
Sub procLeereMarkZeilenLoeschen()
lngAnzahl = Selection.Rows.Count
For I = 1 To lngAnzahl
If Application.CountA(Selection.Rows(I)) = 0 Then
Selection.Rows(I).Delete
End If
Next I
End Sub