Microsoft Excel

Herbers Excel/VBA-Archiv

KW zum Datum, aber anders

    Betrifft: KW zum Datum, aber anders von: Katja
    Geschrieben am: 26.08.2003 15:29:22

    Hallo, ich komm gleich zum Punkt!
    Kalenderwoche zum Datum zuordnen ist nicht schwer, aber in meiner Firma geht eine KW nicht von Mo-So sondern von So-Sa (z.B. KW34 17.08.-23.08.). Das hat mit den Schichten zu tun. Wie kann ich jetzt die KW zu einem Datum ermitteln unter der beschriebenen Voraussetzung?
    Grüsse aus dem Harz von Katja

      


    Betrifft: AW: KW zum Datum, aber anders von: Jörg Gradert
    Geschrieben am: 26.08.2003 15:38:10

    Hallo Katja,
    berechne zu einem Datum einfach die Kalenderwoche von (Datum+1)

    Gruss Jörg


      


    Betrifft: AW: KW zum Datum, aber anders von: Katja
    Geschrieben am: 26.08.2003 15:49:21

    Dankeschön, aber ich weiß nicht genau, wie Du das meinst. Ich berechne die KW mit ...

    (ZelleA2 = Datum)
    =KÜRZEN((A2-WOCHENTAG(A2;2)-DATUM(JAHR(A2+4-WOCHENTAG(A2;2));1;-10))/7)

    Wo soll ich da Deinen Tipp unterbringen? Sorry, aber mein Hirn ist ganz weich und qualmt schon. :o)

    Katja


      


    Betrifft: AW: KW zum Datum, aber anders von: Jörg Gradert
    Geschrieben am: 26.08.2003 15:56:24

    Hallo Katja,

    =KÜRZEN((A2+1-WOCHENTAG(A2+1;2)-DATUM(JAHR(A2+1+4-WOCHENTAG(A2+1;2));1;-10))/7)

    oder gekürzt

    =KÜRZEN((A2+1-WOCHENTAG(A2+1;2)-DATUM(JAHR(A2+5-WOCHENTAG(A2+1;2));1;-10))/7)

    Gruss Jörg


      


    Betrifft: AW: KW zum Datum, aber anders von: Lothar
    Geschrieben am: 26.08.2003 15:50:58

    Hallo Katja,

    Herbert hat ja ein schönes Beispiel für die DIN-Woche
    Ich hab das einfach abgeändert in NICHT-DIN-Woche :)


    in ein Standmodul:

    Option Explicit

    Private Function NOT_DINWeek(dat As Date) As Integer
       Dim dValue As Double
       dValue = DateSerial(Year(dat + (7 - WeekDay(dat)) Mod 7 - 3), 1, 1) 'von (8 - WeekDay) auf (7 - Weekday) geändert
       NOT_DINWeek = (dat - dValue - 3 + (WeekDay(dValue) + 1) Mod 7) \ 7 + 1
    End Function
    


    Function NOT_DINDay(iYear As Integer, iDIN As Integer)
    Dim iDay As Integer, iWeek As Integer
    If iYear = 0 Then
    NOT_DINDay = 0
    Exit Function
    End If
    iDay = 1
    iWeek = NOT_DINWeek(DateSerial(iYear, 1, 1))
    If iWeek <> 1 Then
    Do Until NOT_DINWeek(DateSerial(iYear, 1, iDay)) = 1
    iDay = iDay + 1
    Loop
    Else
    Do Until NOT_DINWeek(DateSerial(iYear, 1, iDay)) <> 1
    iDay = iDay - 1
    Loop
    iDay = iDay + 1
    End If
    NOT_DINDay = DateSerial(iYear, 1, iDay) + (iDIN - 1) * 7
    End Function




    In der Tabelle:

    A1 die KW (z.b. 35)
    B1 =NOT_Dinday($D$1;A1)
    C1 ==+B1+6
    D1 das Jahr (2003)


    Viel Spass
    Lothar


     

    Beiträge aus den Excel-Beispielen zum Thema " KW zum Datum, aber anders"