n-ter Wochentag im Monat



Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: n-ter Wochentag im Monat
von: MAlexander
Geschrieben am: 04.07.2002 - 20:45:06

Moin, Forum.

Zunächst Formales:
Ich wechsle von "Max" (= Michael AleXander) zu "MAlexander", da es hier zu viele "Mäxe" gibt.

Hat sich jemand von Euch schon mal mit dem n-ten Wochentag innerhalb eines Monats beschäftigt ?
Ich meine damit z.B.: 3. Samstag im Oktober 2002 usw.

Wäre klasse, wenn Ihr schon eine Lösung hättet.
Ansonsten würde ich die Sache jetzt in Angriff nehmen - dann wird sie aber auch hier publiziert.

Die Idee ist mir in Anlehnung an die Frage von Andreas B. nach dem letzten Sonntag im März gekommen.
Meine Lösung sieht so aus:
Man übergibt einfach ein beliebiges Datum aus dem Monat, dessen letzten Wochentag man ermitteln will, zusammen mit dem
gewünschten Wochentag:
Mittwoch = GetLastWeekdayOfMonth("03.10.2002", vbWednesday)

Jede Kritik ist gewünscht.

Danke Euch schon mal im voraus.

MAX

Hier die Routine:

Function GetLastWeekdayOfMonth(Datum, Wochentag) As Date

Dim d As Date
Dim Ultimo As Date
Dim Testdatum As Date

d = CDate(Datum)

Ultimo = DateSerial(Year(d), Month(d) + 1, 0)
Testdatum = Ultimo - Weekday(Ultimo) + Wochentag

If (Month(Testdatum) > Month(d)) Then
GetLastWeekdayOfMonth = Testdatum - 7
Else
GetLastWeekdayOfMonth = Testdatum
End If

End Function

nach oben   nach unten

Re: n-ter Wochentag im Monat
von: Sigi E.
Geschrieben am: 04.07.2002 - 21:23:48

Hallo Max,

sowas hab' ich mal gemacht. Vermutlich geht's auch einfacher aber
es funktioniert:

Function XterWochentagDesMonats(Xter As Long, WoTag As Long, _
            Monat As Long, Jahr As Long) As Date
Dim Datum As Date
Dim DatumErster As Date
Dim WoTagErster As Long
Dim WochTag As Long

If Jahr > 1900 And Jahr < 2099 And _
            Monat > 0 And Monat < 13 And _
            Xter > 0 And Xter < 6 And _
            WoTag > 0 And WoTag < 8 Then
    Datum = DateSerial(Jahr, Monat, 1)
    DatumErster = DateSerial(Jahr, Monat, 1)
    WoTagErster = WeekDay(Datum, vbMonday)
    If WoTag >= WoTagErster Then
        Datum = Datum + WoTag - WoTagErster
    Else
        Datum = Datum + 7 + WoTag - WoTagErster
    End If
    Datum = Datum + (Xter - 1) * 7
    If Month(DatumErster) <> Month(Datum) Then
        Datum = ""
    End If
Else
    Datum = ""
End If
XterWochentagDesMonats = Datum
End Function

Gruß
Sigi

nach oben   nach unten

Re: n-ter Wochentag im Monat
von: MAlexander
Geschrieben am: 04.07.2002 - 22:18:49

Moin, Sigi E.

Erstmal Danke für die schnelle Reaktion, obwohl: so dringlich ist das Problem nicht.

Ich habe mir Deine Routine mal kopiert und komme in den nächsten Tagen wieder zurück, nachdem ich wirklich hingeguckt
habe.

So'ne Grund-Idee hilft .

Finde ich was wirklich Gutes, dann wird dies hier auch veröffentlicht.

MAX

nach oben   nach unten

Re: n-ter Wochentag im Monat
von: Coach
Geschrieben am: 05.07.2002 - 13:13:09

Hallo,

es geht auch ganz ohne VBA mit folgender Arrayformel (Eingabe mit Strg+Shift+Enter):
=KKLEINSTE(WENN((MONAT(A1)=MONAT(A1+ZEILE($1:$31)-1))*(WOCHENTAG(A1+ZEILE($1:$31)-1;2)=B1);A1+ZEILE($1:$31)-1);C1)

dabei steht in A1 das Datum des Monatsanfangs, in B1 der gewünschte Wochentag (1 für Montag, 7 für Sonntag) und in C1 das x-te Vorkommen.

Gruß Coach

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "n-ter Wochentag im Monat"