Wenn Spalte "Eintritt" grösser oder gleich Spalte "Austritt", dann komplette Zeile löschen?

...komplette Frage anzeigen

2 Antworten

Es gibt meines Wissens eine Formel, mit der man Spalten löschen kann.

Das geht nur über ein Makro (VBA).

Beispielsweise so (muss entsprechend der Spalten angepasst werden):


Sub test()
For i = 1 To ActiveSheet.Cells(1048576, 1).End(xlUp).Row

If Cells(i, 2) >= Cells(i, 1) Then Rows(i).Delete

Next i
End Sub

Kann ich nicht in einer dritten unabhängigen Spalte S den Wert 0 erzeugen, falls der Wert in der Spalte "Eintritt" grösser oder gleich dem Wert in Spalte "Austritt" und sonst den Wert 1 und dann mittels Filter alle Zeilen löschen, bei denen in der Spalte S eine 0 steht?

0
@clio23

Klar geht das, das Löschen geht dann aber nicht automatisch, sondern muss manuell durchgeführt werden.

Spalte A = Eintritt
Spalte B = Austritt
Spalte C = Hilfszeile

in C1

=Wenn(A1>=B1;"löschen";"")

Statt "löschen" kannst du in die Formel natürlich eintragen was du willst, natürlich auch eine 0.

Dann über C ein Filter setzen, (Leer) rausklicken, sodass nur noch "löschen" da steht, Zeilen markieren und löschen.

1

Habe eben das Makro ausprobiert. Es erscheint aber folgende Meldung:

Laufzeitfehler "1004".:

Fehler der Methode "_Default" des Objekts "Range".

Habe den If-Befehl mit meinen Spalten N und Q ergänzt (If Cells(i,N) >= Cells(i,Q)), muss beim For-Befehl ebenfalls was angepasst werden?

0
@clio23

Dann lautet das Makro so:

14=N (Eintritt)

17=K (Austritt)

Die Zahlen geben die Position der Spalten an. Spalte N ist die 14. Spalte in Excel, SPalte K die 17. Damit das Makro funktioniert, musst du auch das richtige Tabellenblatt aktiviert haben (das, auf dem es ausgeführt werden soll)

Sub test()
For i = 1 To ActiveSheet.Cells(1048576, 14).End(xlUp).Row

If Cells(i, 14) >= Cells(i, 17) Then Rows(i).Delete

Next i
End Sub
1
@azmd108

Ich meine natürlich Q statt K. Die Zahlen die ich geschrieben habe stimmen aber.

1

Wenn irgendwas innerhalb einer Zählschleife gelöscht werden soll, GRUNDSÄTZLICH von oben nach unten zählen! Sonst stimmen die Indizes nicht mehr, sobald ein Element gelöscht worden ist.

For i = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1

 

2
@PWolff

danke euch! bins jetzt am ausprobieren und würde sonst nochmals auf euch zukommen:)

0
@PWolff

Hi zusammen, also hab das jetzt mal ausprobiert, aber hat noch nicht so geklappt. Gebe folgendes ein (es betrifft nun Spalte 14 und 15):

Sub test()
For i = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1

If Cells(i, 14) >= Cells(i, 15) Then Rows(i).Delete

Next i
End Sub

Muss ich für (xlCellTypeLastCell) die Zahl der letzten Zeile eingeben?

Danke euch!

0

Was möchtest Du wissen?