wie in excel 2007/2003 nach Liste filtern

06/05/2010 - 19:26 von michlchen | Report spam
hallo ng.

es ist spàt und ich steh grad völlig auf dem schlauch. ist also zeit
für den feierabend.

wie kann ich nach eine lsite von teilenummern
123,234,654,645 (erstellt anhand der markierung des
users)

den autofilter damit befüllen. ich möchte die teilenummer also am ende
herausfiltern um die zeile zu löschen, weil die teilenummer mehrmals
in der liste sein kann.

habs mit criteria1:=ARRAY(Liste) versucht, aber das klappt nicht. und
nur Liste dann nimmt er alles als string und such danach. ich möchte
aber nicht nach "123,234,654,645" sondern nach 123 oder 234,...
suchen. liegts am komme oder sowas?

thx. vielleicht bin ich morgen ja wieder fit.

merci.
 

Lesen sie die antworten

#1 Andreas Killer
07/05/2010 - 08:18 | Warnen spam
michlchen schrieb:

wie kann ich nach eine lsite von teilenummern
123,234,654,645 (erstellt anhand der markierung des
users)

den autofilter damit befüllen. ich möchte die teilenummer also am ende
herausfiltern um die zeile zu löschen, weil die teilenummer mehrmals
in der liste sein kann.

habs mit criteria1:=ARRAY(Liste) versucht, aber das klappt nicht. und


Das mag mit XL2007 vielleicht gehen, aber davor mit Sicherheit nicht,
dort kannst Du nur max. 2 Kriterien übergeben.

Ich benutzte seit langem die angehàngten Makro's um schnell eine Liste
zu Filtern, man klickt einfach ein paar Werte an und ruft dann
AutofilterSelection oder AutofilterSelectionNot auf, je nachdem ob man
die angeklickten Werte filtern oder wegfiltern will.

Um dann ggf. doch die eine oder andere Spalte nicht zu filtern benutze
ich AutofilterSpaltenAus, auch die Makro's AutofilterFilternAus und
AutofilterAus könnten für Dich hilfreich sein.

Andreas.

Option Explicit

Sub AutofilterSelection()
AutofilterSelectionPrim True
End Sub

Sub AutofilterSelectionNot()
AutofilterSelectionPrim False
End Sub

Sub AutofilterSelectionPrim(ByVal Equal As Boolean)
'Setzt/erzeugt einen Autofilter über alle markierten Zellen
Dim R As Range, F As Filter, I As Long, A As AutoFilter
Dim C As String, O As XlAutoFilterOperator, V As Variant
'Sind Zellen markiert?
If Not TypeOf Selection Is Range Then Exit Sub
If Equal Then
C = ""
O = xlOr
Else
C = "<>"
O = xlAnd
End If
For Each R In Selection
V = R.Value
If IsNumeric(V) Then V = Replace(V, ",", ".")
'Ist ein Autofilter da?
If Not ActiveSheet.AutoFilterMode Then
'Feldnummer für den Filter berechnen
I = R.Column - R.CurrentRegion.Columns(1).Column + 1
'Erstellen und filtern
R.AutoFilter Field:=I, Criteria1:=C & V
Else
'Feldnummer für den Filter berechnen
I = R.Column - ActiveSheet.AutoFilter.Range.Column + 1
'Filter prüfen
With ActiveSheet.AutoFilter.Filters
'Den Filter holen
Set F = .Item(I)
'Filter an?
If F.On Then
'Haben wir schon einen Operator?
If F.Operator Then
'Tja, mehr als 2 gehen halt nicht. :-)
Else
'Nein, dann einen 2ten dazu setzen
R.AutoFilter Field:=I, Criteria1:=F.Criteria1, _
Criteria2:=C & V, Operator:=O
End If
Else
'Nein, diese Spalte filtern
R.AutoFilter Field:=I, Criteria1:=C & V
End If
End With
End If
Next
End Sub

Sub AutofilterFilternAus(Optional ByVal W As Worksheet = Nothing)
'Entfernt alle Filter aus dem Autofilter
If W Is Nothing Then Set W = ActiveSheet
If W.FilterMode Then W.ShowAllData
End Sub

Sub AutofilterAus(Optional ByVal W As Worksheet = Nothing)
'Entfernt den Autofilter aus einem Blatt
If W Is Nothing Then Set W = ActiveSheet
W.AutoFilterMode = False
End Sub

Sub AutofilterSpaltenAus()
'Entfernt die Filter in deren Spalten Zellen markiert sind
Dim F As Filter, R As Range, I As Integer
'Ist ein Filter da und sind Zelle(n) markiert?
If Not ActiveSheet.FilterMode Or _
Not TypeOf Selection Is Range Then Exit Sub

'Aktiven Filterbereich holen
Set R = ActiveSheet.AutoFilter.Range
'Alle Filter durchlaufen
For Each F In ActiveSheet.AutoFilter.Filters
'Mitzàhlen
I = I + 1
'Ist er an und schneidet sich der Bereich?
If F.On And Not Intersect(R.Columns(I).EntireColumn, _
Selection) Is Nothing Then
'Diesen Filter aus
R.AutoFilter I, Null
End If
Next
End Sub

Ähnliche fragen