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

Autofilter Kriterien vorgeben

Autofilter Kriterien vorgeben
27.04.2016 21:00:56
Patrick Kidd

Hallo,
bei folgender Problemstellung komme ich gerade nicht weiter und wollte mal nach Hilfe oder einem workaround fragen:
Ich habe in einer Spalte Datumswerte, aber auch leere Felder bzw. Felder mit fehlerhaften Werten. Über ein Userformular steuere ich den Datumsfilter dahingehend, dass immer die Datensätze im relevanten Zeitraum, bspw. heute + 90 Tage angezeigt werden. Funktioniert alles.
Der Nutzer soll aber auch die Datensätze sehen, die kein gültiges Datum enthalten, da bei diesen nicht klar ist, ob sie angezeigt werden sollen oder nicht. Entsprechend alle Datensätze im Betrachtungszeitraum und alle fehlerhaften Datensätze.
Ich habe alle fehlerhaften Datensätze in ein Array geladen und gebe das als Filterkriterium mit. Funktioniert.
Das zu verknüpfen gelingt mir aber nicht. Im Makrorekroder sehe ich folgendes:
ActiveSheet.Range("$C$1:$C$1315").AutoFilter Field:=1, Criteria1:=Array( _
"blödsinn93", "blödsinn94", "blödsinn96", "blödsinn98", "blödsinn99"), Operator:= _
xlFilterValues, Criteria2:=Array(0, "11/29/2093", 1, "3/13/2091", 1, "5/14/2091", 1, "1/30/2094")
Den ersten Teil erschlage ich über mein array. Beim Datumsteil verwendet Excel jetzt auch ein Array. Das mit dem Datum in der amerikanischen Form ist klar, aber was bedeutet die führende Null, bzw. die Eins?
Ich habe versucht das Array eindimensional nachzubauen. Im debug sieht das auch genauso aus, also arrayDat(1) ist dann z.B. 0, "11/29/2093". Beim Übergeben kommt dann aber die Fehlermeldung, dass ich zu viele Argumente übergeben habe.
Fragen:
1.) Warum werden die Kriterien eigentlich nicht über XLand oder XLor verknüpft? Warum kommt nach dem Datumsarray kein Operator?
2.) Was haben die führende Null bzw. Eins für eine Bedeutung?
3.) Wie muss ich das Datumsarray aufbauen, damit es funktioniert- vielleicht zweidimensional?
4.) Gibt es einen workaround um in derselben Spalte den Datumsfilter zu verwenden und gleichzeitig alle Datensätze, die kein gültiges Datum enthalten?
Tausend Dank im Voraus!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter Kriterien vorgeben
27.04.2016 21:34:35
Fennek
Hallo,
Ohne Nachbau: muss nach einem Array nicht der operator 7 stehen?
Ob bei Datums-Werten wirklich das us-Format nötig ist, ist mir nicht klar, falls excel die dt. Länderenstellungen hat.
M.E. gehören isn array nur Datumswerte ohne 1 bzw 0.
Falls die Zellen ohne Datum einfach leer sind, wäre die Abfrage einfach ( so eingeben) "="
Das Thema interessiert mich, ich werde die anderen Antworten beobachten.
Mfg
Ps: in welcher Quelle hast du diesen Code gesehen?

AW: Autofilter Kriterien vorgeben
27.04.2016 22:39:40
Luschi
Hallo Patrick,
meine Tests mit

ActiveSheet.Range("$B$1:$B$15").AutoFilter Field:=1, Criteria1:=Array("kk1" _
, "xx2", "xx3", "xx4"), Operator:=xlFilterValues, Criteria2:=Array(0, "4/26/2016")
ergeben bei mir:
- Criteria2:=Array(0, "4/26/2016" - alle Datumswerte im Jahr 2016
- Criteria2:=Array(1, "4/26/2016" - alle Datumsangaben im Monat 04/2016
- Criteria2:=Array(2, "4/26/2016" - nur das Datum 26.04.2016
- Criteria2:=Array(1, "3/29/2016", 1, "5/1/2016") - alle Datumswerte der Monate 03 und 05/2016
Bei 0 und 1 spielt es keine Role welcher Tageswert dabei angegeben wird.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Autofilter Kriterien vorgeben
27.04.2016 23:03:00
Patrick Kidd
Hallo,
@Luschi: das ist ja schon mal ein wichtiger Hinweis. Vielen Dank! Hast Du denn auch eine Idee, wie man das Datumsarray (ein- oder zweidimensional, mit Anführungszeichen oder ohne...) betanken muss, damit es an das Kriterium 2 übergeben werden kann? Über eine Schleife möchte ich alle Daten in das Array übernehmen, die bestimmte Bedingungen erfüllen. Entsprechend brauche ich nur den Wert 2 für taggenau und dann das Datum aus meiner Spalte im Array.
@Fennek: Über den fehlenden Operator habe ich mich auch gewundert. Ich habe das mit dem Makrorekorder aufgezeichnet, um hinter die Syntax zu kommen. Nimmt man den aufgezeichneten Codeschnipsel, verarbeitet der den einwandfrei. Entsprechend sind die Operatoren zwischen den Kriterien und nach dem Datums array anscheinend nicht Pflicht.

Anzeige
AW: Autofilter Kriterien vorgeben
27.04.2016 23:17:02
Fennek
Hallo,
In xl2003 geht weder array noch Datums-Texte ohne cdate("3.4.2016")
Ich werde es morgen mit xl2016 testen.
Mfg

AW: Autofilter Kriterien vorgeben
28.04.2016 09:52:00
Fennek
Hallo Patrick,
bei einem kleinen Test kleinen Test könnte ich die Vorschläge von 'Luschi' (Klaa-Praris, FFM?) nicht nachvollziehen.
Anbei meine Liste für den Autofilter:

Kopieren
with cells(1).currentregion
.autofilter 2, "abc" 'Spalte B, Wert abc
.copy sheets(2).cells(1,1) 'alle sichtbaren Zellen MIT Überschrift
.offset(1).copy sheets(2).cells(1,1) 'alle sichtbaren Zellen OHNE Überschrift
.offset(1).entirerow.delete 'Auswahl löschen OHNE Überschrift
.autofilter 'zurücksetzen
end with
.Autofilter Field, Criteria1, Operator, Crietria2
Empty Text
.autofilter 1, "="
NOT Empty Text
.autofilter 1, "<>"
Opersator 2: xlOR
.autofilter 1, "abc", 2, "def" 'Textbeginns "abc*", Enthält NICHT: "<>abc"
Operator 7: xlFilterValues
.autofilter 1, array("abc", "def"), 7
.autofilter 1, [transpose(G1:g5)], 7
Operator 1: xlAnd
Numbers
.autofilter 1, 123
.autofilter 1, "<>123" 'NOT equal; "<123": kleiner
Operator 3: xlTop10items
Operator 4: xlBottom10Items
Operator 5: xlTop10Percent
Operator 6: xlBottom10Percent
Above Average Criteria 33, Operator 11
Below Average Criteria 34, Operator 11
Colors
Operator
8	xlFilterCellColor
9	xlFilterFontColor
12	xlFilterNoFill
13	xlFilterAutomaticFontColor
14	xlFilterNoIcon
10	xlFilterIcon, criterium No für einzelne Icon-Sets
Datum: operator 11
Tag, Criterium
1	xlFiterToday
2	xlFilteryesterday
3	xlFilterTomorrow
Woche
4	xlFilterThisWeek
5	xlFilterLastWeek
6	xlFilterNextWeek
Monat
7	xlFilterThisMonth
8	xlFilterLastMonth
9	xlFilterNextMonth
Quarter
10	xlFilterThisQuarter
11	xlFilterLastQuarter
12	xlFilterNextQuarter
Year
13	xlFilterThisYear
14	xlFilterLastYear
15	xlFilterNextYear
16	xlFilterYearToDate
Specific Month
21	January (xlFilterAllDatesInPeriodJanuary)
22	Feb
23
31	Nov
32	Dez
Zeitraum:
Anfang = DateValue("1.1.2016 09:00")
Ende = DateValue("28.2.2016 15:20")
Range.autofilter, 1, ">" & 1* Anfang, 1, "<" & 1*ende
mfg

Anzeige
AW: Autofilter Kriterien vorgeben
28.04.2016 11:11:54
Luschi
Hallo Fennek,
ich glaube wir, reden da einander vorbei. Es geht geht um folgende Datums-Filterfunktionalität:
- alle Datumswerte 2015
- alle Datumswerte der Monat April 2016 und Februar 2017
- bestimmte Einzel-Datumswerte zusätzlich: 06.05.2016, 12.07.2016,02.01.2017
Dies erreicht man mit folgendem Filterkriterion:

Criteria2:=Array(0, "1/1/2015", 1, "4/26/2016", 1, "2/5/2017", _
2, "5/6/2016", 2, "7/12/2016", 2, "1/2/2017")

AW: genial
28.04.2016 11:40:23
Fennek
Hallo,
Tippfaul wie ich bin, habe ich die Kurzform gewählt (autofilter 1, "abc"), aber damit klappt dein Ansatz nicht.
Wenn man 'brav' field:= usw tippt, ist es ok.
Wieder was gelernt.
Mfg

Anzeige
AW: Autofilter Kriterien vorgeben
29.04.2016 10:45:52
Patrick Kidd
Hallo, wenn sich die Lösung in diesen Thread verbirgt, ist sie mir entgangen. Gibt es eine Lösung?
If Year(CDate(ActiveWorkbook.Sheets("daten").Range("q" & z).Value)) = "2016" Then
ReDim Preserve arr2(0 To y)
arr2(y) = "2, " & """" & DatumFormat(ActiveWorkbook.Sheets("daten").Range("q" & z).Value) &  _
y = y + 1
End If

Dieser Schnipsel lädt beispielsweise alle Daten aus 2016 in das Array. Mit arr2(1) hätte ich dann genau die Darstellung 2,"Datum im amerikanischem Format"
Datumformat als Funktion wandelt das Datum ins amerikanische Format um. Entsprechend sieht das Array optisch exakt so aus, wie vom Makrorekorder aufgezeichnet.
Ich verstehe das im Moment so, dass das nicht funktioniert, ist das richtig?
Mit diesem Codeschnipsel lade ich die fehlerhaften Felder aus der Spalte
If Not IsDate(ActiveWorkbook.Sheets("daten").Range("q" & z).Value) Then
ReDim Preserve arr(0 To i)
arr(i) = ActiveWorkbook.Sheets("daten").Range("q" & z).Value
i = i + 1

Die Übergabe ans Array und das Setzen des Autofilters, klappt einwandfrei.
    ActiveWorkbook.Sheets("daten").Range(ActiveWorkbook.Sheets("daten").Cells(15, 7),  _
ActiveWorkbook.Sheets("daten").Cells(lzeile, lspalte)).AutoFilter , _
Field:=11, Criteria1:=Array(arr), Operator:=xlFilterValues

Mein Problem ist halt, dass ich bspw. alle fehlerhaften Daten anzeigen möchte und alle Daten bspw. zwischen heute und heute+90 Tage. Das zu kombinieren geht anscheinend nicht, da ich für die Datumsabfrage schon beide Kriterien verbrauche.

Anzeige
AW: Autofilter Kriterien vorgeben
29.04.2016 17:24:40
Fennek
Hallo,
'Luschi' hat in seinem Beitrag gezeigt, welcher autofilter alle Datumswerte des Jahres 2016 auswählt. In 'meiner' Liste gibt es auch den Code für autofilter des aktuellen Jahres.
Mfg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige