Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeile löschen, wenn mehrere Bedingungen

Zeile löschen, wenn mehrere Bedingungen
08.03.2007 16:11:00
Mario
Mahlzeit !
Möchte gern damit :
Sub LoeschenT()
Dim lngI As Long
Application.ScreenUpdating = False
For lngI = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If ActiveSheet.Cells(lngI, 1) = "10" Then ActiveSheet.Cells(lngI, 1).EntireRow.Delete
Next lngI
Application.ScreenUpdating = True
End Sub

alle Zeilen löschen, in denen die Zahl 10, aber auch die Zellen/Zeilen, in denen noch mehrere andere Sachen vorkommen, d.h. wenn mindestens eine der Bedingungen zutrifft.
Die Tabelle besteht nur aus Spalte A und ca. 1500-2000 Zeilen.
Problem ist, ich habe so ca. 40 Werte, bei deren Auftreten die Zeile komplett gelöscht werden muss, brauche also noch so ne Art "Zeilenumbruch" im Code. Stehe hier auf dem Schlauch... Oder sollte man das vielleicht eleganter lösen ? Könnte mir jemand kurz helfen ?
Danke, Mario

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile löschen, wenn mehrere Bedingungen
08.03.2007 17:09:00
Mario
Natürlich (und sinnvoller) würde auch gehen, alles zu löschen bis auf die Zeilen, in denen Zahl1, Zahl 2 oder Zahl 3 vorkommen.
Ist bestimmt logischer und einfacher. Hilft mir jemand auf die Sprünge ?
AW: Zeile löschen, wenn mehrere Bedingungen
08.03.2007 20:14:00
Daniel
Hallo
naja, das kommt immer darauf an, obs mehr Zahlen gibt, bei denen gelöscht werden soll oder mehr Zahlen, bei denen nicht gelöscht werden soll.
für solche Fälle, bietet sich aber immer die Select Case Methode an, dein Code würde dann so aussehten:
Im Beispiel bleiben die Zeilen stehen, die eine 1, 5 oder 20 enthalten.
falls du andere Zahlen hast, musst du das noch anpassen.
Sub LoeschenT()
Dim lngI As Long
Application.ScreenUpdating = False
For lngI = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
Select Case Cells(i, 1)
Case 1, 5, 20
'nichts machen
Case Else
Rows(i).Delete
End Select
Next lngI
Application.ScreenUpdating = True
End Sub

Es gibt noch andere möglichkeiten, sowas zu machen.
Dieser Variante hier sollte bei grossen Datenmengen wesentlich schneller sein, als eine Schleife mit IF-Abfrage oder SELECT CASE.
Das Bespiel wieder für die Zahlen 1, 5 und 20
Sub schneller_löschen()
Dim lngI As Long
lngI = Cells(Rows.Count, 1).End(xlUp).Row
Columns(1).Insert
With Range("A1:A" & lngI)
.FormulaLocal = "=WENN(ODER(B1=1;B1=5;B1=20);ZEILE();"""")"
.Formula = .Value
.CurrentRegion.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
.EntireColumn.Delete
End With
End Sub

Anzeige
AW: Zeile löschen, wenn mehrere Bedingungen
09.03.2007 08:23:00
Mario
Hi Daniel,
variante 2 klappt sehr gut, allerdings sieht meine Datei etwa so aus (alles Spalte A) :
32 4453017.2410 5699372.1530 125.6460 31800700 0 0 0 0
33 4453016.9120 5699371.5880 125.6520 1190 9412 0 0 0
34 4453015.4790 5699371.8550 125.6630 3280 0 0 0 0
35 4453014.8770 5699370.6500 125.6490 31800700 0 0 0 0
36 4453015.2620 5699371.0960 125.6140 1190 9409 0 0 0
37 4453014.8930 5699370.7650 125.6590 10 9409 0 0 0
38 4453015.1590 5699370.7940 125.6140 10 9409 0 0 0
39 4453015.3900 5699370.8910 125.6220 10 9409 0 0 0
40 4453015.5310 5699371.1370 125.6260 10 9409 0 0 0
Wenn ich jetzt die Zeilen mit der 1190/3280/31800700 behalten will, müsste es irgendwie so aussehen :
.FormulaLocal = "=WENN(ODER(B1=1190;B1=3280;B1=31800700);ZEILE();"""")".
Wie fummel ich hier die entspr. Ausdrücke dazu ?
So: "* 1190 *"; etc ?
Anzeige
AW: Zeile löschen, wenn mehrere Bedingungen
09.03.2007 18:20:00
Daniel
Hallo
wenn das alles in einer Spalte steht dann sinds ja keine Zahlen mehr, sondern Texte.
da musst du wahrscheinlich mit den Textfunktionen SUCHEN, FINDEN und ISTFEHLER eine Formel zusammenbasteln, die du dann ins Makro einsetzt.
ggf geht auch was mit ZählenWenn.
Die Formel kannst du ja auch direkt in Excel ausprobieren und dann wenn sie funktioniert ins Marko reinkopieren.
Solltest du innerhalb der Formel Anführungszeichen verwenden, müssten diese im Makrotext verdoppelt werden.
probier mal das hier:
.formulalocal = _
"=WENN(ZÄHLENWENN(B1;""*1190*"")+ZÄHLENWENN(B1;""*3280*"")+ZÄHLENWENN(B1;""*31800700*"")=0;WAHR;ZEILE())"
Gruß, Daniel
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige