Excel 2003: Auswahl nach Filtern automatisiert löschen

24/06/2011 - 16:43 von Alexander Goetzenstein | Report spam
Hallo,
bisschen doofes Subject, deswegen erzàhle ich mal ganz genau, was ich
erreichen will:
ich bekomme regelmàßig eine Liste in Tabellenform mit ein paar tausend
Geràten, die weiterverarbeitet werden soll. Dazu ist es u.a. nötig,
Geràte nach bestimmten Kriterien auszusortieren. So werden bspw. in
Spalte B Klassen geführt (5 mögliche Werte, von denen zwei übrig bleiben
sollen), in Spalte I der Lagerort (11 mögliche Werte, davon sollen drei
übrig bleiben), in Spalte Q eine Verwendung (5 von 12 möglichen Werten).

Manuell mache ich das so, dass ich Autofilter einrichte, dann auf die
nicht gewünschten Werte filtere, die Ergebniszeilen markiere (also erste
Zeile markieren, dann [Strg]+[Shift]+[Pfeil runter]), rechtsmàusig auf
einen Zeilenkopf klicke und delete row wàhle. Dann show all, und mit dem
nàchsten Wert wiederholen.

Das ist natürlich recht ermüdend, und fehlertràchtig außerdem. Also
versuchte ich, ein Makro aufzuzeichnen, doch da werden stets feste
Zeilennummern abgelegt. Werden es mehr Zeilen oder weniger, oder
verschiebt sich das Ganze, werden so Fehler produziert. Mal ein
Schnipsel, wie das aussieht:


Rows("1:1").Select
Selection.Insert Shift:=xlDown
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:="LgS"
Rows("2701:2701").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Selection.AutoFilter Field:=2, Criteria1:="Stg"
Rows("1393:1393").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
Range("B2").Select
Selection.AutoFilter Field:=2, Criteria1:="Zusatzgeràt"
Rows("1393:1394").Select
Selection.Delete Shift:=xlUp
ActiveSheet.ShowAllData
ActiveWindow.SmallScroll ToRight:=9


... usw.

Wie macht man sowas richtig, so dass es auch mit neuen Daten
funktioniert, auch wenn sich die Gesamtzahl àndert o.à.?

Gruß
Alex
 

Lesen sie die antworten

#1 Claus Busch
24/06/2011 - 17:13 | Warnen spam
Hallo Alexander,

Am Fri, 24 Jun 2011 16:43:14 +0200 schrieb Alexander Goetzenstein:

Manuell mache ich das so, dass ich Autofilter einrichte, dann auf die
nicht gewünschten Werte filtere, die Ergebniszeilen markiere (also erste
Zeile markieren, dann [Strg]+[Shift]+[Pfeil runter]), rechtsmàusig auf
einen Zeilenkopf klicke und delete row wàhle. Dann show all, und mit dem
nàchsten Wert wiederholen.



das Codebeispiel funktioniert für Stg und LgS in der Spalte B. Die
sichtbaren Zellen nach dem Filtern werden dann gelöscht. Der Bereich der
Tabelle zum Löschen sollte noch angepasst und dann den Code mit den
weiteren Vorgàngen erweitern:
Sub Loeschen()
Dim LRow As Long
Application.DisplayAlerts = False
With ActiveSheet
.Range("A1").AutoFilter Field:=2, Criteria1:="=Stg", _
Operator:=xlOr, Criteria2:="=LgS"
LRow = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A2:Q" & LRow).SpecialCells(xlCellTypeVisible).Delete
.ShowAllData
End With
Application.DisplayAlerts = True
End Sub


Mit freundlichen Grüssen
Claus Busch
Win XP Prof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2

Ähnliche fragen