Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
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
Inhaltsverzeichnis

Range anhand Inhalt in Spalte A löschen

Range anhand Inhalt in Spalte A löschen
12.10.2020 09:06:21
Tamás
Hallo zusammen,
ich habe folgendes Problem:
Ich habe ein Excel Arbeitsblatt mit ca. 1000 Zeilen. Ich möchte nun eine Range löschen. Die Range soll variabel definiert werden, Kriterium ist dass in Spalte A die Zeichenfolge "XYZ_P1" vorkommt. Wichtig dabei ist, dass hinter der Zeichenfolge "XYZ_P1" noch weiterer Text folgt.
Wenn also, sagen wir in Zeile 89 - Zeile 103 die Zeichenfolge "XYZ_P1" vorkommt, soll die Range ("A89:H103") gelöscht werden und die Zellen sollen nach oben verschoben werden.
Meine VBA Kenntnisse beschränken sich auf das Aufzeichnen von Makros mit dem Rekorder und anschließendes "entschlacken" des aufgezeichneten Codes von Hand.
Ich würde mich sehr freuen wenn mir jemand helfen könnte.
Vielen Dank im Voraus.
Liebe Grüße Tamás

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dann ...
12.10.2020 09:15:10
neopa
Hallo Tamás,
... foltere doch Deine Daten in Spalte A nach Textinhalt "XYZ_P1" und lösche die gefilterten Zeilen und hebe anschließend den Filter wieder auf.
Gruß Werner
.. , - ...
AW: dann ...
12.10.2020 10:11:52
Tamás
Hallo Werner,
das funktioniert so leider nicht.
AW: Range anhand Inhalt in Spalte A löschen
12.10.2020 09:19:26
UweD
Hallo
in ein Modul...

Sub TT
Dim LR As Long, i As Long, RNG As Range
Set RNG = Columns("A:H")
LR = Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte
For i = LR To 1 Step -1
If Cells(i, 1) Like "XYZ_P1*" Then
Intersect(Rows(i), RNG).Delete xlUp
End If
Next
End Sub
LG UweD
AW: Range anhand Inhalt in Spalte A löschen
12.10.2020 10:08:36
Tamás
Hallo UweD,
vielen Dank für den Code, grundsätzlich klappt das hervorragend, der einzige kleine Wermutstropfen ist allerdings dass die Ausführung des Makros, in Abhängigkeit der Anzahl der Zeilen im Arbeitsblatt, relativ viel Zeit braucht.
Kann man da vielleicht noch was optimieren?
Anzeige
AW: Range anhand Inhalt in Spalte A löschen
12.10.2020 11:40:04
UweD
Hallo
Die anderen Lösungen löschen immer die ganze Zeile.
Ich habe das so verstanden, dass das NICHT der Fall ist.
Da hilft das FILTERN nicht
GGF. bringt es etwas, die Bildschirmaktivitäten auszusetzen.

Sub TT()
Dim LR As Long, i As Long, RNG As Range
On Error GoTo Fehler
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Set RNG = Columns("A:H")
LR = Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte
For i = LR To 1 Step -1
If Cells(i, 1) Like "XYZ_P1*" Then
Intersect(Rows(i), RNG).Delete xlUp
End If
Next
Fehler:
'*** Rücksetzen
With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub
LG UweD
Anzeige
AW: Range anhand Inhalt in Spalte A löschen
12.10.2020 12:54:10
Tamás
Hallo Uwe,
sensationell! Deine Optimierung hat die Zeit für die Ausführung des Makros von 80s auf beeindruckende 5s reduziert.
Ich denke damit ist mein Anliegen bestmöglich gelöst.
Vielen lieben Dank!
Gruß
Tamás
Danke für die Rückmeldung (owT)
12.10.2020 13:02:35
UweD
AW: Range anhand Inhalt in Spalte A löschen
12.10.2020 10:29:27
Daniel
Hi
Da gibts mehrere Möglichkeiten
Eine wäre folgende, da du ja den Recorder kennst, beschränke ich mich auf die Beschreibung des Ablaufs:
1. ersetze in der Spalte A alle "XYZ_P1" durch WAHR (in VBA dann TRUE ohne Anführungszeichen). Der Haken "gesamten Zellinhalt vergleichen" darf nicht gesetzt sein.
2. selektieren dann die Spalte A und schränke die Selektion auf Wahrheitswerte ein (Start - Bearbeiten - Suchen und Auswählen - Inhalte - Konstanten mit Wahrheitswerten)
3. lösche diese Zellen mit der Option "ganze Zeile"
Sollte das immer noch eine spürbare Laufzeit erzeugen, dann such im Archiv mal nach "Zeilen Löschen" + "Duplikate entfernen"
Das ist eine der besten Methoden um Zeilen mit Bedingung zu löschen.
Gruß Daniel
Anzeige
AW: Range anhand Inhalt in Spalte A löschen
12.10.2020 12:44:27
Tamás
Hallo Daniel,
es sollen nur die Zellen im Range A:H gelöscht werden, wenn aber gefiltert wurde kann man nur ganze Zeilen löschen.
Gruß
Tamás
AW: Range anhand Inhalt in Spalte A löschen
12.10.2020 14:51:29
Daniel
Hi
Mit meiner Lösung kannst du auch nur die Spalten A:H löschen.
Dazu gibt es die Funktionen Resize oder Intersect.
Als ganzes sieht der Code dann so aus:
Columns(1).Replace "XYZ_P1", true, xlpart
Columns(1).SpecialCells(xlcelltypeconstants, 4).resize(,8).delete Shift:=xlup
Sollte das eine spürbare Rechenzeit ergeben, kannst du die noch verbessern wenn die Liste sortiert werden darf:
Columns(1).Replace "XYZ_P1", true, xlpart
Range("A:H").Sort key1:=Cells(1, 1), Order1:=xlascending, header:=xlguess
Columns(1).SpecialCells(xlcelltypeconstants, 4).resize(,8).delete Shift:=xlup
Damit solltest du deutlich unter einer Sekunde liegen und es sind nur 3 Zeilen Code.
Wenn du den Code verstanden hast, bist du außerdem zukünftig in der Lage, solche Aufgaben mit großen Datenmengen auch von Hand in kürzester Zeit zu erledigen, ohne dass du einen Code schreiben musst.
Gruß Daniel
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige