chef1568
Goto Top

Excelliste nach KW filtern

Hallo zusammen,

ich habe eine Excelliste in der ich die Einträge nach Kalenderwoche individuell filtern möchte.
--> Dropdown mit Auswahl der KW soll alle Datumseinträge der ausgewählten KW filtern.
Leider habe ich keine Idee wie ich dies am unkompliziertesten umsetzen kann.

Die Ermittlung der aktuellen KW habe ich in einem anderem Makro wie folgt gelöst:

Option Explicit

Sub checkKW()
    Dim KWact As Integer
        
    'aktuelle KW errechnen  
    KWact = KW_DIN(Date)
End Sub

Function KW_DIN(Datum As Date) As Integer
    'Gibt KW des entsprechenden Datums zurück  
    'IN:    Datum  
    'OUT:   KW  
    
    KW_DIN = DatePart("ww", Datum, vbMonday, vbFirstFourDays)  
End Function


Danke und Gruß

Content-Key: 300320

Url: https://administrator.de/contentid/300320

Printed on: April 16, 2024 at 07:04 o'clock

Member: Radioflyer
Radioflyer Mar 29, 2016 updated at 14:07:20 (UTC)
Goto Top
Moinsen,

wenn Dir mit der Gruppierung in einer Pivot Tabelle gedient ist,
hab ich hier ne gute Doku was zu tun ist:
http://www.online-excel.de/excel/singsel.php?f=131
Das ist (leider ohne Dropdownauswahl) einfach und
ein Excel Standard, den jeder Excelkönner versteht.

Cheerz, RF
Member: Sprite
Sprite Mar 29, 2016 at 14:19:22 (UTC)
Goto Top
Ich würde eine Zusätzliche Spalte einfügen und in diese mit z.B. =KALENDERWOCHE(A1;21) auf das Datum verweisen.
Die Zusätzliche Spalte lässt sich dann filtern.
Mitglied: 114757
Solution 114757 Mar 29, 2016 updated at 17:45:00 (UTC)
Goto Top
Moin.
Zitat von @Sprite:
Ich würde eine Zusätzliche Spalte einfügen und in diese mit z.B. =KALENDERWOCHE(A1;21) auf das Datum verweisen.
Die Zusätzliche Spalte lässt sich dann filtern.
Würde ich der Einfachheit halber auch so machen, die Spalte lässt sich ja auch ausblenden.

Falls du das nicht willst hilft dir sicher diese Funktion weiter die zu einer Kalenderwoche das Datum des Montags dieser ermittelt:
Function GetMondayDateOfKW(kalenderwoche As Integer, jahr As Integer) As Date
    GetMondayDateOfKW = DateSerial(jahr, 1, (7 * kalenderwoche) - 3 - (Weekday(DateSerial(jahr, 0, 0), vbMonday) - 1))
End Function
Damit hast du schon die halbe Miete. Das Enddatum für den Filter ermittelst du dann einfach aus dem ermittelten Datum + 6 Tage.
kw = 1
dStart = GetMondayDateOfKW(kw, Year(Date))
dEnd = DateAdd("d",6,dStart)  
Diese Datum-Werte kannst du dann für den Auto-Filter deiner Tabelle verwenden:
ActiveSheet.ListObjects("DeineTabelle").Range.AutoFilter Field:=1, Criteria1:=">=" & Format(dStart, "yyyy-mm-dd"), Operator:=xlAnd, Criteria2:="<=" & Format(dEnd, "yyyy-mm-dd")  
Gruß jodel32