Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabellen Auszüge nach Bedingungen kopieren
#21
Hola,

Doppelarbeit wurde wahrscheinlich schon gemacht....dennoch:

http://www.office-loesung.de/p/viewtopic.php?f=166&t=692714

Gruß,
steve1da
Antworten Top
#22
Hallo Zusammen.

ich habe es mal mit dem Spezialfilter (wie auch hier empfohlen) umgesetzt.
Da funktioniert es (hoffentlich) in allen Versionen.


Code:
Option Explicit

'Kuwer

Sub TestSpezialfilter()
  Static Counter As Long
  Application.ScreenUpdating = False
  Call FilterAus
  Select Case Counter
    Case 1
      Call FehlerSpezialfilter
    Case 2
      Call EmailSpezialfilter
    Case 3
      Call FaxSpezialfilter
  End Select
  If Counter > 2 Then
    Counter = 0
  Else
    Counter = Counter + 1
  End If
  Application.ScreenUpdating = False
End Sub

Sub FehlerSpezialfilter()
  With Worksheets("Filter")
    
    'CriteriaRange wird neu erstellt
    .Range("A1:F2") = ""
    Worksheets("Tabelle1").Range("A1:F1").Copy .Range("A1")
    .Range("A2").Formula = "<>Call"
    .Range("C2").Formula = "="
    .Range("D2").Formula = "=true"
    
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterInPlace, _
      CriteriaRange:=.Range("A1:F2")
      
    Worksheets("Fehler").Range("A1").CurrentRegion = ""
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=.Range("A1:F2"), _
      CopyToRange:=Worksheets("Fehler").Range("A1")
  End With
 
End Sub

Sub EmailSpezialfilter()
  With Worksheets("Filter")
    
    'CriteriaRange wird neu erstellt
    .Range("A1:F2") = ""
    Worksheets("Tabelle1").Range("A1:F1").Copy .Range("A1")
    .Range("A2").Formula = "<>Call"
    .Range("C2").Formula = ">0"
    .Range("D2").Formula = "=true"
    .Range("F2").Formula = "=true"
    
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterInPlace, _
      CriteriaRange:=.Range("A1:F2")
      
    Worksheets("Email").Range("A1").CurrentRegion = ""
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=.Range("A1:F2"), _
      CopyToRange:=Worksheets("Email").Range("A1")
  End With

End Sub

Sub FaxSpezialfilter()
  With Worksheets("Filter")
    
    'CriteriaRange wird neu erstellt
    .Range("A1:F2") = ""
    Worksheets("Tabelle1").Range("A1:F1").Copy .Range("A1")
    .Range("A2").Formula = "<>Call"
    .Range("C2").Formula = ">0"
    .Range("D2").Formula = "=true"
    .Range("E2").Formula = "=true"
    
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterInPlace, _
      CriteriaRange:=.Range("A1:F2")
      
    Worksheets("Fax").Range("A1").CurrentRegion = ""
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=.Range("A1:F2"), _
      CopyToRange:=Worksheets("Fax").Range("A1")
  End With

End Sub

Sub FilterAus()
  With Worksheets("Tabelle1")
    If .FilterMode Then
      If .AutoFilterMode Then
        .AutoFilterMode = False
      Else
        .ShowAllData
      End If
    End If
  End With
End Sub

Gruß Uwe


Angehängte Dateien
.xls   BeideFiltervarianten.xls (Größe: 67,5 KB / Downloads: 7)
Antworten Top
#23
@ Uwe

Hi Uwe,

kommen noch mehr Foren? ;)

Du hattest ja geschrieben, dass sich wohl ab XL2010 etwas geändert haben muss. Weißt du zwischenzeitlich, was geändert wurde? Liegt das eher an der Filterfunktion, die mit den unterschiedlichen Makros angestoßen werden oder eher an den Makros, die von den unterschiedlichen XL-Versionen nicht umgesetezt werden können?
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#24
Hi Günter,

Zitat:kommen noch mehr Foren?
ich hab nicht weiter gesucht. :)

Es sieht so aus, dass die Steuerung des Autofilters per VBA ab 2010 endlich so funktioniert wie erwartet.

Gruß Uwe
Antworten Top
#25
(25.05.2015, 07:55)Kuwer schrieb: Hallo Zusammen.

ich habe es mal mit dem Spezialfilter (wie auch hier empfohlen) umgesetzt.
Da funktioniert es (hoffentlich) in allen Versionen.



Code:
Option Explicit

'Kuwer

Sub TestSpezialfilter()
  Static Counter As Long
  Application.ScreenUpdating = False
  Call FilterAus
  Select Case Counter
    Case 1
      Call FehlerSpezialfilter
    Case 2
      Call EmailSpezialfilter
    Case 3
      Call FaxSpezialfilter
  End Select
  If Counter > 2 Then
    Counter = 0
  Else
    Counter = Counter + 1
  End If
  Application.ScreenUpdating = False
End Sub

Sub FehlerSpezialfilter()
  With Worksheets("Filter")
    
    'CriteriaRange wird neu erstellt
    .Range("A1:F2") = ""
    Worksheets("Tabelle1").Range("A1:F1").Copy .Range("A1")
    .Range("A2").Formula = "<>Call"
    .Range("C2").Formula = "="
    .Range("D2").Formula = "=true"
    
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterInPlace, _
      CriteriaRange:=.Range("A1:F2")
      
    Worksheets("Fehler").Range("A1").CurrentRegion = ""
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=.Range("A1:F2"), _
      CopyToRange:=Worksheets("Fehler").Range("A1")
  End With
 
End Sub

Sub EmailSpezialfilter()
  With Worksheets("Filter")
    
    'CriteriaRange wird neu erstellt
    .Range("A1:F2") = ""
    Worksheets("Tabelle1").Range("A1:F1").Copy .Range("A1")
    .Range("A2").Formula = "<>Call"
    .Range("C2").Formula = ">0"
    .Range("D2").Formula = "=true"
    .Range("F2").Formula = "=true"
    
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterInPlace, _
      CriteriaRange:=.Range("A1:F2")
      
    Worksheets("Email").Range("A1").CurrentRegion = ""
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=.Range("A1:F2"), _
      CopyToRange:=Worksheets("Email").Range("A1")
  End With

End Sub

Sub FaxSpezialfilter()
  With Worksheets("Filter")
    
    'CriteriaRange wird neu erstellt
    .Range("A1:F2") = ""
    Worksheets("Tabelle1").Range("A1:F1").Copy .Range("A1")
    .Range("A2").Formula = "<>Call"
    .Range("C2").Formula = ">0"
    .Range("D2").Formula = "=true"
    .Range("E2").Formula = "=true"
    
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterInPlace, _
      CriteriaRange:=.Range("A1:F2")
      
    Worksheets("Fax").Range("A1").CurrentRegion = ""
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=.Range("A1:F2"), _
      CopyToRange:=Worksheets("Fax").Range("A1")
  End With

End Sub

Sub FilterAus()
  With Worksheets("Tabelle1")
    If .FilterMode Then
      If .AutoFilterMode Then
        .AutoFilterMode = False
      Else
        .ShowAllData
      End If
    End If
  End With
End Sub

Gruß Uwe

Danke 

Ich benutze dein Spezialfilter
Antworten Top
#26
(25.05.2015, 10:01)FaDos schrieb:
(25.05.2015, 07:55)Kuwer schrieb: Hallo Zusammen.

ich habe es mal mit dem Spezialfilter (wie auch hier empfohlen) umgesetzt.
Da funktioniert es (hoffentlich) in allen Versionen.




Code:
Option Explicit

'Kuwer

Sub TestSpezialfilter()
  Static Counter As Long
  Application.ScreenUpdating = False
  Call FilterAus
  Select Case Counter
    Case 1
      Call FehlerSpezialfilter
    Case 2
      Call EmailSpezialfilter
    Case 3
      Call FaxSpezialfilter
  End Select
  If Counter > 2 Then
    Counter = 0
  Else
    Counter = Counter + 1
  End If
  Application.ScreenUpdating = False
End Sub

Sub FehlerSpezialfilter()
  With Worksheets("Filter")
    
    'CriteriaRange wird neu erstellt
    .Range("A1:F2") = ""
    Worksheets("Tabelle1").Range("A1:F1").Copy .Range("A1")
    .Range("A2").Formula = "<>Call"
    .Range("C2").Formula = "="
    .Range("D2").Formula = "=true"
    
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterInPlace, _
      CriteriaRange:=.Range("A1:F2")
      
    Worksheets("Fehler").Range("A1").CurrentRegion = ""
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=.Range("A1:F2"), _
      CopyToRange:=Worksheets("Fehler").Range("A1")
  End With
 
End Sub

Sub EmailSpezialfilter()
  With Worksheets("Filter")
    
    'CriteriaRange wird neu erstellt
    .Range("A1:F2") = ""
    Worksheets("Tabelle1").Range("A1:F1").Copy .Range("A1")
    .Range("A2").Formula = "<>Call"
    .Range("C2").Formula = ">0"
    .Range("D2").Formula = "=true"
    .Range("F2").Formula = "=true"
    
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterInPlace, _
      CriteriaRange:=.Range("A1:F2")
      
    Worksheets("Email").Range("A1").CurrentRegion = ""
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=.Range("A1:F2"), _
      CopyToRange:=Worksheets("Email").Range("A1")
  End With

End Sub

Sub FaxSpezialfilter()
  With Worksheets("Filter")
    
    'CriteriaRange wird neu erstellt
    .Range("A1:F2") = ""
    Worksheets("Tabelle1").Range("A1:F1").Copy .Range("A1")
    .Range("A2").Formula = "<>Call"
    .Range("C2").Formula = ">0"
    .Range("D2").Formula = "=true"
    .Range("E2").Formula = "=true"
    
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterInPlace, _
      CriteriaRange:=.Range("A1:F2")
      
    Worksheets("Fax").Range("A1").CurrentRegion = ""
    Worksheets("Tabelle1").Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=.Range("A1:F2"), _
      CopyToRange:=Worksheets("Fax").Range("A1")
  End With

End Sub

Sub FilterAus()
  With Worksheets("Tabelle1")
    If .FilterMode Then
      If .AutoFilterMode Then
        .AutoFilterMode = False
      Else
        .ShowAllData
      End If
    End If
  End With
End Sub

Gruß Uwe

Danke 

Ich benutze dein Spezialfilter

Ist es auch möglich die Spalten die ich nicht brauche gleichzeitig auszublenden?
Es wären Spalten : H, K, L, O, R, S, T, U, W

Danke
Antworten Top
#27
Hallo,

das Ausblenden könntest Du ja auch einmal händisch machen und gut ist. ;)
Als Code dann so:
Code:
Sub SpaltenAusblenden()
 Worksheets("Tabelle1").Range("H1,K1,L1,O1,R1,S1,T1,U1,W1").EntireColumn.Hidden = True
 Worksheets("Fehler").Range("H1,K1,L1,O1,R1,S1,T1,U1,W1").EntireColumn.Hidden = True
 Worksheets("Email").Range("H1,K1,L1,O1,R1,S1,T1,U1,W1").EntireColumn.Hidden = True
 Worksheets("Fax").Range("H1,K1,L1,O1,R1,S1,T1,U1,W1").EntireColumn.Hidden = True
End Sub

Gruß Uwe
Antworten Top
#28
(26.05.2015, 06:50)Kuwer schrieb: Hallo,

das Ausblenden könntest Du ja auch einmal händisch machen und gut ist. ;)
Als Code dann so:

Code:
Sub SpaltenAusblenden()
 Worksheets("Tabelle1").Range("H1,K1,L1,O1,R1,S1,T1,U1,W1").EntireColumn.Hidden = True
 Worksheets("Fehler").Range("H1,K1,L1,O1,R1,S1,T1,U1,W1").EntireColumn.Hidden = True
 Worksheets("Email").Range("H1,K1,L1,O1,R1,S1,T1,U1,W1").EntireColumn.Hidden = True
 Worksheets("Fax").Range("H1,K1,L1,O1,R1,S1,T1,U1,W1").EntireColumn.Hidden = True
End Sub

Gruß Uwe

Super Danke
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste