Supportnet Computer
Planet of Tech

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.

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:


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:

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

Antwort 10 von Pommes

meine mail kam zurück, hast du vielleicht noch ne andere addi?

pommes@tij-power.com

Antwort 11 von Guenter

Die Beispiel-Tabelle ist unterwegs.

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

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

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

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:


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