Erster Sonntag .. Samstag im Monat

Erster beliebiger Wochentag in einem Monat

Excel, alle Ver­sio­nen

Die Aufgabe

Es soll für ein gegebenes Datum der erste Son­ntag, Mon­tag, Dien­stag, … im Monat des entsprechen­den Datums gefun­den wer­den.

Diese Auf­gabe lässt sich sehr gut per VBA-Makro mit ein­er selb­st definierten Funk­tion (UDF) lösen. Fügen Sie dazu in ein generelles Mod­ul der aktuellen Arbeitsmappe den (als *.txt-File) hier als *.zip gespe­icherten Code ein (bitte nur die ent­pack­te *.txt). Gehen Sie dazu so vor:

  • Öff­nen Sie nach dem ent­pack­en die Datei mit dem Code.
  • Kopieren Sie den kom­plet­ten Code der *.txt-Datei in die Zwis­chen­ablage.
  • Öff­nen oder aktivieren Sie bei Bedarf das File, die Arbeitsmappe, wo die Funk­tion ver­wen­det wer­den soll.
  • Fügen Sie erforder­lichen­falls  ein Mod­ul ein. Wie das geht, ist beispiel­sweise hier aufgezeigt.
  • StrgV, um in den (eventuell noch) leeren Edi­tor-Bere­ich den Inhalt der Zwis­chen­ablage einzufü­gen. Sollte der eben kopierte Code nicht mehr in der Zwis­chen­ablage sein, ent­fer­nen Sie eventuell falsch einge­fügte Werte, kopieren Sie noch ein­mal aus der Text-Datei und fügen dann den Inhalt in den Edi­tor ein. Alter­na­tiv kön­nen Sie natür­lich auch den Code abtip­pen …  😀
  • Wenn Sie mögen, schließen Sie gerne den VBA-Edi­tor. Er wird in dieser Form nicht mehr benötigt.

Als Alter­na­tive gibt es noch die Möglichkeit, dass Sie direkt in den VBA-Edi­tor gehen und diese Klassen-Datei direkt über den entsprechen­den Menüpunkt importieren, dann liegt alles bere­its am richti­gen Ort. Da kann dann eigentlich nichts schief gehen … (Die Klassendatei liegt auch in der *.zip, siehe weit­er oben, falls Ihr Brows­er die Datei direkt öffnet und nicht zum Down­load anbi­etet.)

▲ nach oben …

Anwendung

Ab sofort kann die eben geschaf­fene UDF (selb­st definierte Funk­tion) in der aktuellen Mappe an beliebiger Stelle einge­set­zt wer­den.

Angenom­men, in A1 ste­ht ein beliebiges Datum. Wichtig ist nur, dass es wirk­lich ein (serielles) Datum ist und kein Text! Als Beispiel sei das Datum der 06.01.2000 und es soll das erste Woch­enende, also der erste Sam­stag dieses Monats gefun­den wer­den. Geben Sie dann in B1 fol­gende Formel ein:

=FirstXdayInMonth(A1;„sa”)

Das erste Argu­ment (hier: A1) ist das Datum, welch­es als Grund­lage für die Berech­nung dient (hier natür­lich die Zelle mit dem Datum). Das muss ein „echt­es” Datum sein, son­st wird ein falsch­er Wert zurück gegeben, näm­lich der 00.01.1900 (kein Schreibfehler!). Das zweite Argu­ment ist der Wochen­tag, welch­er zugrunde gelegt wer­den soll. In der obi­gen Formel ist das "sa". Hier kön­nen Sie Zahlen oder auch Texte ver­wen­den. Für Zahlen gilt: Son­ntag = 1, Mon­tag = 2, und der Sam­stag = 7. Ver­wen­den Sie Texte, dann müssen diese in dop­pelte Anführungsze­ichen (sog. Gänse­füßchen) einge­fasst wer­den. Sie kön­nen dann die Kurz­form "So" .. "Sa" ver­wen­den oder den Namen des Wochen­t­ages voll auss­chreiben, also "Son­ntag" .. "Sam­stag" oder auch „Sonnabend”. Dabei ist Groß- Klein­schrei­bung nicht rel­e­vant, selb­st "diEn­sTaG" wird akzep­tiert und kor­rekt aus­gew­ertet.

Als Ergeb­nis der Funk­tion wer­den Sie eine serielle Zahl erhal­ten, welche dem berech­neten Datum entspricht. Im oben genan­nten Fall wäre das 36526. Als Datum for­matiert wird in der Zelle dann der 01. Jan­u­ar 2000 dargestellt.

Falls Sie ohne viel Aufwand ein­mal prüfen wollen, wie solch eine Tabelle aussieht und wie die Funk­tion angewen­det wird, dann laden Sie gerne diese Excel-Datei herunter und acht­en Sie bitte bei Excel-Ver­sio­nen ab 2007 darauf, dass ein Makro bzw. VBA-Code aus­ge­führt wer­den kann. – Falls Sie diese Funk­tion öfter in ver­schiede­nen Dateien ein­set­zen wollen, kön­nen Sie den Code auch als Add-In spe­ich­ern und dann in Ihr Excel ein­binden. Hin­weise dazu find­en Sie hier und auch hier im Blog.

Hin­weis: Wie Sie solch eine Funk­tion ein­binden kön­nen, erfahren Sie hier im Blog. Selb­stver­ständlich kön­nen Sie diese UDF auch als Add-In spe­ich­ern / erstellen und nach dem Ein­binden in allen Excel-Map­pen nutzen. Mehr dazu an dieser Stelle für Ver­sio­nen bis Excel 2003 hier, ab Excel 2007 schauen Sie hier nach.

Hin­weise: Selb­stre­dend ist es möglich, die Funk­tion so umzugestal­ten, dass auch als Text vor­liegende kalen­darische Datum­swerte akzep­tiert wer­den. Sollte es erforder­lich sein, dass mehrere For­men der übergebe­nen Dat­en kor­rekt aus­gew­ertet wer­den, ste­ht Ihnen unser Spon­sor GMG Com­put­er-Con­sult­ing gerne zur Seite. Eine Mail an uns wer­den wir gerne weit­er­leit­en. – Und zweit­ens: Stören Sie sich bitte nicht an dem englis­chsprachi­gen Namen der Funk­tion. Sie kön­nen ihn gerne in einen beliebi­gen, den Vor­gaben entsprechen­den Namen ändern. Und last but not least: Bei Bedarf senden wir Ihnen gerne die Datei auch im 2003er-For­mat (*.xls) zu.

▲ nach oben …

Rück­mel­dun­gen / Feed­back gerne per Mail an mich (G.Mumme@Excel-ist-sexy.de)

Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?

Dann würde ich mich über einen Beitrag Ihrer­seits z.B. 2,00  freuen … (← Klick mich!)

Dieser Beitrag wurde unter Datum und Zeit, Downloads, Mit VBA/Makro, Musterlösungen abgelegt und mit , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.