Supportnet / Forum / Tabellenkalkulation
Zeilen automatisch löschen?
Frage
Hallo schon wieder. Ist es möglich, ganze Zeilen löschen zu lassen, wenn in einer bestimmten Zelle in dieser Zeile etwas bestimmtes steht? Beispiel: Ich habe 1000 Zeilen mit Daten, alle 10-15 Zeilen ist eine dabei, die gelöscht werden muss, weil in einer Zelle der Wert -1 steht.
Antwort 1 von poorfirele
dafür gibt es sicherlich ein makro, doch da kann ich nicht helfen.
alternativ die datensätze nach dem o.g. kriterium -1 sortieren lassen und die entsprechenden datensätze dann manuell löschen.
alternativ die datensätze nach dem o.g. kriterium -1 sortieren lassen und die entsprechenden datensätze dann manuell löschen.
Antwort 2 von Pommes
Ich kann die nicht sortieren, die Reihenfolge muss erhalten bleiben.
Antwort 3 von Guenter
Hallo,
die Makrolösung, wenn in der Spalte A der Wert -1 vokommt:
Gruß
Günter
die Makrolösung, wenn in der Spalte A der Wert -1 vokommt:
Option Explicit
Sub test()
Dim i As Integer
Dim n As Integer
i = Cells(Rows.Count, 1).End(xlUp).Row
For n = 1 To i
If Cells(n, 1).Value = -1 Then
Rows(n).Select
Selection.Delete Shift:=xlUp
End If
Next
End Sub
Gruß
Günter
Antwort 4 von Pommes
Vielen Dank, aber wo schreib ich das denn hin? :)
Antwort 5 von Pommes
und wie ändere ich die spalte?
Antwort 6 von Guenter
Hallo,
Du gibst in Deiner Tabelle Alt F11 ein, dann bist Du in der Entwicklungsumgebung.
Mit ansicht Projekt Explorer suchst Du VBA Project (Deine Mappe), dann Einfügen Modul.
Dort gibst Du das Makro ein und gehst auf Ausführen, Makro Ausführen (Vorher Tabelle mal sicherheitshalber unter anderem Namen speichern).
In der Zeile:
gibt 1 die Spalte an, dort kannst du Deine entsprechende spalte eintragen,
z.B. Spalte E:
Wenn noch nicht alles klar, nochmals melden.
Gruß
Günter
Du gibst in Deiner Tabelle Alt F11 ein, dann bist Du in der Entwicklungsumgebung.
Mit ansicht Projekt Explorer suchst Du VBA Project (Deine Mappe), dann Einfügen Modul.
Dort gibst Du das Makro ein und gehst auf Ausführen, Makro Ausführen (Vorher Tabelle mal sicherheitshalber unter anderem Namen speichern).
In der Zeile:
If Cells(n, 1).Value = -1 Then
gibt 1 die Spalte an, dort kannst du Deine entsprechende spalte eintragen,
z.B. Spalte E:
If Cells(n, 5).Value = -1 Then
Wenn noch nicht alles klar, nochmals melden.
Gruß
Günter
Antwort 7 von Pommes
Muss ich das Makro vielleicht vorher speichern, oder sowas? habe unter ausführen keine option "macro ausführen"
Antwort 8 von Pommes
Jetzt gehts, aber ich soll erst einen Macronamen vergeben :( geht irgendwie net
Antwort 9 von Guenter
Hallo,
den Makronamen muss man nicht neu vergeben, der sollte, wenn alles richtig gemacht wurde, "Test" heißen.
Ich könnte Dir eine Excel-Datei schicken, wenn Du Deine e-mail angibst.
Du kannst mir auch eine Beispiel-Tabelle (ohne wichtige Daten) schicken, wo ich Dir das Makro eintragen kann.
guenter.hoelzemann@lycos.de
Gruß
Günter
den Makronamen muss man nicht neu vergeben, der sollte, wenn alles richtig gemacht wurde, "Test" heißen.
Ich könnte Dir eine Excel-Datei schicken, wenn Du Deine e-mail angibst.
Du kannst mir auch eine Beispiel-Tabelle (ohne wichtige Daten) schicken, wo ich Dir das Makro eintragen kann.
guenter.hoelzemann@lycos.de
Gruß
Günter
Antwort 10 von Pommes
meine mail kam zurück, hast du vielleicht noch ne andere addi?
pommes@tij-power.com
pommes@tij-power.com
Antwort 11 von Guenter
Die Beispiel-Tabelle ist unterwegs.
Gruß
Günter
Gruß
Günter
Antwort 12 von want2cu
Hallo zusammen,
ich hätte dafür noch eine ganz einfache Praktikerlösung:
Per Autofilter nur die Datensätze mit der -1 filern, dann diese Zeilen löschen und den Autofilter wieder rausnehmen -fertig!
Die ursprüngliche Reihenfolge der Datensätze bleibt dabei erhalten.
CU
want2cu
ich hätte dafür noch eine ganz einfache Praktikerlösung:
Per Autofilter nur die Datensätze mit der -1 filern, dann diese Zeilen löschen und den Autofilter wieder rausnehmen -fertig!
Die ursprüngliche Reihenfolge der Datensätze bleibt dabei erhalten.
CU
want2cu
Antwort 13 von Pommes
wie macht man das denn genau?
Antwort 14 von want2cu
Hallo Pommes,
Menu DATEN-FILTER-AUTOFILTER
dann taucht in den Spaltenköpfen ein Dreieck auf, das eine Pulldownliste öffnet. Dort steht dann jeder in der Spalte vorkommende Wert, u.a,. auch -1.
Diesne Wert wählen, dann werden per Autofilter alle anderen Zeilen ausgeblendet. Dann dies Zeilen markieren und löschen (BEARBEITEN-ZELLEN LÖSCHEN).
Dann den Autofilter wieder auf "alle" setzen und fertig. Die urspüngliche Reihenfolge bleibt dabei erhalten.
CU
want2cu
Menu DATEN-FILTER-AUTOFILTER
dann taucht in den Spaltenköpfen ein Dreieck auf, das eine Pulldownliste öffnet. Dort steht dann jeder in der Spalte vorkommende Wert, u.a,. auch -1.
Diesne Wert wählen, dann werden per Autofilter alle anderen Zeilen ausgeblendet. Dann dies Zeilen markieren und löschen (BEARBEITEN-ZELLEN LÖSCHEN).
Dann den Autofilter wieder auf "alle" setzen und fertig. Die urspüngliche Reihenfolge bleibt dabei erhalten.
CU
want2cu
Antwort 15 von Pommes
Sind denn dann nur die Zellen, oder die ganze Zeile gelöscht?
Antwort 16 von Pommes
Super, das hat so funktioniert! Ich hab noch was: In der Tabelle sind viele leere Zellen. In denen soll der Inhalt der Zelle darüber eingetragen werden. Habt Ihr dafür auch noch was?
Antwort 17 von Aliba
Hi Pommes,
das könnte man entweder
a) über eine 2. Tabellenblatt lösen:
Nehmen wir an deine Tabelle heißt Tabelle1 und beginnt in Zeile 1 mit Überschriften und geht bis Spalte E.
Dann die Formel in A1 des neuen Tabellenblattes:
=Tabelle1!A1
Diese Formel bis Spalte E nach rechts ziehen.
In A2 die Formel:
=WENN(Tabelle1!A2="";A1;Tabelle1!A2)
Diese Formel nach rechts bis Spalte E ziehen und dann nach unten bis zum Tabellenende. Jetzt die ganze Tabelle markieren, kopieren und über Einfügen, Inhalte einfügen, Werte an gleicher Stelle wieder einfügen.
oder
b): wie oben von Klaus schon beschrieben, den Autofilter auf die Tabelle setzen und dann eine Spalte nach der anderen nach leer filtern.
in die erste angezeigte leere Zelle die Formel:
(nehmen wir mal an die erste angezeigte Zelle ist A13)
=A12 und diese Formel dann in der gefilterten Liste bis zum Tabellenende ziehen und mit allen SPalten die selbe Vorgehensweise wiederholen.
CU Aliba
das könnte man entweder
a) über eine 2. Tabellenblatt lösen:
Nehmen wir an deine Tabelle heißt Tabelle1 und beginnt in Zeile 1 mit Überschriften und geht bis Spalte E.
Dann die Formel in A1 des neuen Tabellenblattes:
=Tabelle1!A1
Diese Formel bis Spalte E nach rechts ziehen.
In A2 die Formel:
=WENN(Tabelle1!A2="";A1;Tabelle1!A2)
Diese Formel nach rechts bis Spalte E ziehen und dann nach unten bis zum Tabellenende. Jetzt die ganze Tabelle markieren, kopieren und über Einfügen, Inhalte einfügen, Werte an gleicher Stelle wieder einfügen.
oder
b): wie oben von Klaus schon beschrieben, den Autofilter auf die Tabelle setzen und dann eine Spalte nach der anderen nach leer filtern.
in die erste angezeigte leere Zelle die Formel:
(nehmen wir mal an die erste angezeigte Zelle ist A13)
=A12 und diese Formel dann in der gefilterten Liste bis zum Tabellenende ziehen und mit allen SPalten die selbe Vorgehensweise wiederholen.
CU Aliba
Antwort 18 von Pommes
Das erste hat nicht funktioniert, vermutlich, weil es mehrere Zellen untereinander ohne Inhalt gibt, aber das 2. klappt super, vielen Dank an alle.
Antwort 19 von Guenter
Hallo,
für das ausfüllen habe ich folgendes Makro verwendet:
Das Makro läuft prima.
Gruß
Günter
für das ausfüllen habe ich folgendes Makro verwendet:
Sub test1()
Dim i As Integer
Dim n As Integer
Dim m As Integer
Dim Auto As String
i = Cells(Rows.Count, 1).End(xlUp).Row
For m = 1 To 6
For n = 2 To i
If Cells(n, m).Text <> "" Then
Auto = Cells(n, m).Text
End If
If Cells(n, m).Text = "" Then
Cells(n, m).Value = Auto
End If
Next
Next
End Sub
Das Makro läuft prima.
Gruß
Günter

