Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Leere Zeilen automatisch entfernen ?





Frage

Hallo und guten Tag, ich habe mir eine einspaltige Tabelle mit Postleitzahlen aus 5 Bundesländern erstellt. Dazu habe ich *34000* als Start-PLZ und *97999* als letzte PLZ automatisch eintragen lassen, ich habe also rund 64.000 Zeilen in dieser Spalte. Nun habe ich manuell PLZ aus bestimmten Landkreisen bzw. nicht existierende PLZ entfernt, mal entsteht dann 1, 2 oder auch 50 - 100 leere Zeilen. Nun möchte ich nicht durch kopieren und einfügen die Zahlen *aufrücken*, so daß zum Schluß keine Leerzeilen mehr vorhanden sind. Ich möchte aber auch die leeren Zeilen nicht ausblenden. Kann man die Zahlen ohne manuellen Eingriff aufrücken lassen und damit alle leeren Zeilen loswerden ? Freundliche Grüsse Wolf

Antwort 1 von coros

Moin Wolf,

nachfolgend ein Makro, welches die Spalte A nach Leerzellen durchsucht. Wenn Leerzellen gefunden wurden, wird die Zeile gelöscht.

Sub LeereZeilenLoeschen()
Dim lR%, i%
ActiveSheet.Select
lR = Cells(Rows.Count, 1).End(xlUp).Row 'Spalte A bis zum Eintrag Ende
For i = lR To 1 Step -1
If IsEmpty(Cells(i, 1)) Then
Rows(i).Delete
End If
Next i
End Sub


Da ich nicht weiß, wie gut Du Dich mit VBA auskennst, schreibe ich hier noch, wie Du den Code in Deine Tabelle bekommst.

Über die Tastenkombination Alt und F11 gelangst Du in die VBA- Umgebung. In dem linken Fenster (Projekt-VBA Projekt) suchst Du den Namen Deiner Tabelle. Markiere ihn und klicke nacheinander in der Menüleiste auf Einfügen => Modul. Kopiere das obige Makro und füge es in das rechte Fenster.
Um das Makro ausführen zu lassen, gibt es mehrere Möglichkeiten. Eine davon wäre, das Makro über eine Schaltfläche auszuführen. Dazu gehst Du wieder in Deine Tabelle und öffnest die Symbolleiste Steuerelemenet-Toolbox. Dann klickst Du in der Symbolleiste auf den sechsten Button von links (Befehlsschaltfläche). Ziehe Dir eine solche Schaltfläche in der von Dir gewünschten Größe auf den Bildschirm. Danach klicke in der selben Symbolleiste auf den dritten Button von links (Code anzeigen). Die VBA- Umgebung wird wieder geöffnet und in dem Fenster müsste Private Sub CommandButton1_Click() und End Sub. stehen. In die Leerzeile zwischen den beiden Texten gibst Du Call LeereZeilenLoeschen ein. Danach wechsle wieder in Deine Tabelle und betätige in der Symbolleiste Steuerelemenet-Toolbox den ganz linken Button (Entwurfsmodus beenden). Wenn Du alles richtig gemacht hast, müssten nun bei Betätigen der Befehlsschaltfläche, die Du erstellt hast, Deine Leerzeilen gelöscht werden.

Eine andere Möglichkeit wäre, das Makro automatisch ausführen zu lassen, sobald Du einen Eintrag gelöscht hast. Hierzu wechsele in die VBA- Umgebung. Suche wieder auf der linken Seite Deinen Tabellennamen und klicke dort doppelt drauf. Kopiere nachfolgenden Code dort hinein.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lR%, i%
ActiveSheet.Select
lR = Cells(Rows.Count, 1).End(xlUp).Row 'Spalte A bis zum Eintrag Ende
For i = lR To 1 Step -1
If IsEmpty(Cells(i, 1)) Then
Rows(i).Delete
End If
Next i
End Sub


Du solltest, damit das Makro bei jedem Neustart Deiner Datei auch zur Verfügung steht, Deine Sicherheitsstufe beim Verwenden von Makros kontrollieren. Dazu klicke nacheinander in der Menüleiste auf Extras => Makro => Sicherheit klicken. Danach, wenn nicht schon angezeigt, in die Registerkarte Sicherheitsstufe wechseln. Dort wähle den Punkt Mittel aus. Beende das Fenster mit OK. Beim Neustart Deiner atei erscheint ein Fenster, in dem Du wählen kannst, ob Makros deaktiviert oder aktiviert werden sollen.

Ich hoffe, ich konnte Dir weiterhelfen,bei Fragen einfach hier nochmal posten,
coros
Und nicht vergessen, hier noch einmal zu posten, ob Dich die Hilfe weitergebracht oder sogar Dein Problem gelöst hat.

Antwort 2 von WolfFFM

Hallo Coros,

vielen Dank für die ausführliche Antwort -
das Problem ist gelöst :-))

Wolf

Antwort 3 von coros

Moin Wolf,

freut mich, dass ich Dir weiterhelfen konnte. Danke auch für die Rückmeldung.


MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 4 von want2cu

Hallo Wolf,

schön, dass das Problem durch Coros gelöst werden konnte.

Mich würde allerdings eines interessieren: Hätte dein Problem bei einer einspaltigen Tabelle nicht durch Markieren der gesamten Spalte und einfaches "aufsteigendes Sortieren" mittels Klick auf das entsprechende Symbol gelöst werden können?
Dann wären die Leerzeilen automatisch ans Ende gekommen und die Postleitzahlen hätten auftsteigende ohne Leerzeile untereinander gestanden.

CU
want2cu



Antwort 5 von hollie

stimmt, sortieren wäre einfacher gewesen

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: