Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1344to1348
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

Daten variabel filtern

Daten variabel filtern
30.01.2014 12:30:50
Rolf.dW
Hallo zusammen,
in der Variablen "filterkrit" hinterlege ich per VBA eine variable Anzahl Kriterien (z.B. filterkrit = "349", "351", "358") für nachstehende Code-Zeile.
Range(erfHOME, Range(erfHOME).Offset(-1, 0)).Offset(0, 3) _
.AutoFilter Field:=1, Criteria1:=Array(filterkrit), Operator:=xlFilterValues
Leider funktioniert das nicht; die Filterkriterien in "filterkrit" werden ignoriert. Hat jemand eine Idee, woran es liegt?
Gruß, Rolf

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten variabel filtern
30.01.2014 13:00:23
Rudi
Hallo,
filterkrit = Array("349", "351", "358")
Range(erfHOME, Range(erfHOME).Offset(-1, 0)).Offset(0, 3) _
.AutoFilter Field:=1, Criteria1:= filterkrit, Operator:=xlFilterValues
Gruß
Rudi

AW: Daten variabel filtern
30.01.2014 15:06:35
Rolf.dW
Hallo Rudi,
dein Vorschlag funktioniert leider nicht; auch dann nicht wenn ich eine paar "Gänsebeine" einbaue (s.u.):

For z = Range(erfHOME).Row To Range(erfHOME).End(xlDown).Row
With Cells(z, sp)
If .Offset(0, 3).Value = .Offset(1, 3).Value And .Value = 30 _
Or .Offset(0, 3).Value = .Offset(1, 3).Value And .Value = 40 _
Or .Offset(0, 3).Value = .Offset(1, 3).Value And .Value = 98 Then
.Select
Range(Selection, Selection.Offset(1, 1)).Interior.ColorIndex = 6
anzahl = anzahl + 1
If filterkrit = "" Then
filterkrit = "Array(" & """" & .Offset(0, 3).Value & _
"""" & ")"
Else
filterkrit = Left(filterkrit, Len(filterkrit) - 1) & _
", " & """" & .Offset(0, 3).Value & """" & ")"
End If
End If
End With
Next z

Die Code-Zeile

Range(erfHOME, Range(erfHOME).Offset(-1, 0)).Offset(0, 3) _
.AutoFilter Field:=1, Criteria1:=filterkrit, Operator:=xlFilterValues

blendet immer noch sämtliche Zeilen aus.
Gruß, Rolf

Anzeige
AW: Daten variabel filtern
30.01.2014 15:30:05
Rudi
Hallo,
nächster Versuch
For Z = Range(erfHOME).Row To Range(erfHOME).End(xlDown).Row
With Cells(Z, sp)
If .Offset(0, 3).Value = .Offset(1, 3).Value Then
Select Case .Value
Case 30, 40, 98
Range(.Offset(0, 0), .Offset(1, 1)).Interior.ColorIndex = 6
anzahl = anzahl + 1
FilterKrit = FilterKrit & .Offset(0, 3).Value & ","
End Select
End If
End With
Next Z
FilterKrit = Left(FilterKrit, Len(FilterKrit) - 1)pre>

Range(erfHOME, Range(erfHOME).Offset(-1, 0)).Offset(0, 3) _
.AutoFilter Field:=1, Criteria1:=Split(filterkrit,","), Operator:=xlFilterValues
Gruß
Rudi

Anzeige
AW: Daten variabel filtern
30.01.2014 16:05:38
Rolf.dW
Hallo Rudi,
kann leider keinen Erfolg vermelden. Anbei eine abgespeckte Musterdatei inkl. Makro, vielleicht hilft das weiter.
https://www.herber.de/bbs/user/89033.xlsm
Die auskommentierten Zeilen sind Teil meines ursprünglichen Makros. Die 'MsgBox filterkrit' ist reine Info; sie zeigt das Ergebnis deiner/meiner Variante, je nachdem, welche ForNext-Variante aktiv ist.
Das Problem ist halt, egal ob mit oder ohne "Gänsebeine", das Filterkriterium funktioniert nicht.
Gruß, Rolf

AW: Daten variabel filtern
30.01.2014 16:18:58
Rudi
Hallo,
du hast dich nicht komplett an meine Verbesserungen gehalten.
Range(erfHOME, Range(erfHOME).Offset(-1, 0)).Offset(0, 3) _
.AutoFilter Field:=1, Criteria1:=Split(filterkrit, ","), Operator:=xlFilterValues
Gruß
Rudi

Anzeige
AW: Daten variabel filtern
30.01.2014 17:03:22
Rolf.dW
Sorry Rudi,
das hing mir der Zeile
"FilterKrit = Left(FilterKrit, Len(FilterKrit) - 1)"
unterhalb von Next z zusammen. Ich hab gedacht, du hättest lediglich vergessen, den Rest meines Makros zu löschen und deshalb nicht genau hingeschaut.
Jetzt funktioniert es jedenfalls. Danke dir!
Gruß, Rolf

AW: Daten variabel filtern - Nachtrag
30.01.2014 23:20:07
Rolf.dW
Hallo Rudi,
zwei Dinge vergaß ich, für die ich mich noch ausdrücklich bedanken möchte!
1.
Select Case .Value
Case 30, 40, 98

Ich habe (vergeblich) alles Mögliche versucht, z.B. mit "or .value = 40", die Selekt-Schleife zu verkürzen, bin aber kläglich gescheitert.
(Ävver dat dat esu einfach jeit..., hätte ich nicht gedacht.)
2.
Criteria1:=Split(filterkrit, ","
Diese Funktion kannte ich bislang überhaupt noch nicht. "F1" hat mir diesbezüglich mehr Verwirrung als Klarheit verschafft.
"Luc:-?" würde jetzt verm. sagen: "Telefonier' doch mal mit Ceres!"
Dummerweise habe ich aber die Vorwahl von Ceres neulich verbummelt.
Kannst du mir evt. hinsichtlich Split auf die Sprünge helfen?
Gruß, Rolf
P.S. Anbei als Verlustigung & Entschädigung für deine Mühen: meine Mitarbeiterbeurteilung, wie ich sie damals 19Tobak von meinem Scheffene erhalten habe.
https://www.herber.de/bbs/user/89037.xls
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige