Microsoft Excel

Herbers Excel/VBA-Archiv

Autofilter Makro

Betrifft: Autofilter Makro von: Neo
Geschrieben am: 17.09.2014 15:27:28

Guten Tag,
ich habe eine Liste mit mehreren Kunden und möchte daraus die unwichtigeren Kunden in ein anderes Arbeitsblatt kopieren.
Ich habe es wie folgt gemacht leider kommt der Fehler: "Laufzeitfehler 1004" Anwendungs- oder objektdefinierter Fehler.

Folgender Code:



Sub Sonstige_Liste()
'
' Sonstige_Liste Makro
'

'
    Sheets("Aufträge").Select
    ActiveSheet.Range("$A$1:$M$998").AutoFilter Field:=2, Criteria1:="<>Rewe Stelle", _
    Operator:=xlOr, Criteria2:="<>Rewe Lehrte", _
    Operator:=xlOr, Criteria3:="<>Rewe Köln-Langel", _
    Operator:=xlOr, Criteria4:="<>Rasting Meckenheim", _
    Operator:=xlOr, Criteria5:="<>Rasting Essen"
    Range("A1:M1020").Select
    Selection.Copy
    Sheets("Diverse").Select
    Range("A1").Select
    ActiveSheet.Paste
End Sub


Sitze jetzt schon die dritte Stunde an dem bisschen Code!
Bitte helft mir!

  

Betrifft: AW: Autofilter Makro von: Daniel
Geschrieben am: 17.09.2014 15:40:16

Hi

der Autofilter hat nur 2 "Criteria" die man miteinander verknüpfen kann !

filtere mal von Hand nach 3 oder mehr Kriterien und zeiche die Aktion mit dem Recorder auf, dann siehst du wie es geht.

Gruß Daniel


  

Betrifft: AW: Autofilter Makro von: Adis
Geschrieben am: 17.09.2014 22:08:46

Hallo

anbei eine Makro Lösung die einfacher sein dürfte wie das herumspielen mit AutoFilter
Die Bereiche sind in Const angegeben. Ich gehe davon aus das Rewe und Rasting in der
Spalte B stehen. Sonst bitte abaendern. Die Spalte N dient lediglich als Hilfsspalte
und wird nach dem sortieren automatisch gelöscht. Ich kopiere und lösche die Daten.

Die Case Option kann um beliebig viele Kunden erweitert werden.
Der doofe Trick liegt darin das ich zum Schluss nur Else auswerte.

Const AswBereich = "B1:B1020"
Const IndxSpalte = "N1:N1020"

Sub Makro_alsAutoFilter_Ersatz()
Dim Div As Object, flg As String, i
Set Div = Sheets("Diverse")
   'alle Daten in Tabelle Diverse kopieren
   Sheets("Aufträge").Range("A1:M1020").Copy
   Sheets("Diverse").Range("A1").PasteSpecial xlAll
   'Hilfsspalte "N" für Lauf-Nr zum sortieren
   Div.Range(IndxSpalte).Resize(1, 1).Value = 1
   Div.Range(IndxSpalte).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1

   'Schleife um alle Kunden auszuwerten  (Else wird mit No ausgewertet)
   For Each i In Div.Range(AswBereich)
   flg = "Ja"  'Flag zum löschen
   'Stamm Kunden auswerten, sonstige löschen
   '**  die Liste kann beliebig erweitert werden
   Select Case i.Value
   Case "Rewe Stelle"
   Case "Rewe Lehrte"
   Case "Rewe Köln-Langel"
   Case "Rasting Meckenheim"
   Case "Rasting Essen"
   Case Else: flg = "No"
   End Select    'alle Kunden ausser sonstige löschen
   If flg = "Ja" Then Div.Cells(i.Row, "A").Resize(1, 14) = Empty
   Next i

   'Bereich nach Lauf Nr sortieren
   Div.Range("A1:N1020").Sort Key1:=Div.Range("N1"), Order1:=xlAscending, Header:= _
      xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
   'Hilfsspalte löschen
   Div.Columns("N").ClearContents
End Sub
Gruss Adis


  

Betrifft: AW: Autofilter Makro von: Neo
Geschrieben am: 18.09.2014 09:24:25

Vielen Dank an euch beide,
Adis Makro funktioniert Super.

Gruß Bernd


 

Beiträge aus den Excel-Beispielen zum Thema "Autofilter Makro"