Microsoft Excel

Das Portal zum Thema Excel-Formeln

Gruppe: Datum/Zeit

Beitrag: Anzahl von Wochentagen (z.B. Montage) in einem Zeitraum *

Aufgabe
Du willst wissen, wie oft ein bestimmter Wochentag zwischen einem Ausgangs- und einem Enddatum vorkommt.
Lösung
in A1 steht das Anfangsdatum; - in A2 das Enddatum.
In B1 steht der Name des Wochentages, der gezählt werden soll.

In B2 (Hilfszelle) steht:
=VERGLEICH(B1;{"Montag";"Dienstag";"Mittwoch";"Donnerstag";"Freitag";"Samstag";"Sonntag"};0)
das ist keine Array-Formel: die {geschweiften Klammern} also eingeben.
oder als Array-Formel:
{=VERGLEICH(B1;TEXT(ZEILE(2:8);"tttt");0)}
oder mit Suchen
=SUCHEN(LINKS(B1;2);"#modimidofrsaso")/2

das Ergebnis:
=WENN((A2-A1+1-(B2-WOCHENTAG(A1;2))-WENN(WOCHENTAG(A1;2)>B2;7;0))/7<0;0;AUFRUNDEN((A2-A1+1-(B2-WOCHENTAG(A1;2))-WENN(WOCHENTAG(A1;2)>B2;7;0))/7;0))

Alternative als Array-Formel (in B1 steht die Wochentagszahl 1 bis 7 für Montag bis Sonntag):
=SUMMENPRODUKT((WOCHENTAG(ZEILE(INDIREKT(A1&":"&A2));2)=B1)*1)

Kurzform von Franz Pölt (die Wochentagszahlen sind dann aber 0 bis 6 in B3 für Samstag bis Freitag):
=RUNDEN((REST(A1-B3-1;7)+A2-A1-2)/7;0)
Handelt es sich um ein Endergebnis, mit dem nicht weitergerechnet wird, langt formatiert ohne Nachkommastellen:
=(REST(A1-B3-1;7)+A2-A1-2)/7

Eine Kalenderwoche beginnt mit einem Montag. Die Anzahl der Montage in einem Zeitraum entspricht also der Anzahl der (angebrochenen) KW.
Sollen nur komplette KW gezählt werden, muss geprüft werden, ob das bis-Datum ein Sonntag ist:
=RUNDEN((REST(A1-3;7)+A2-A1-2)/7;0)-(WOCHENTAG(A2)>1)*((A2-A1)>5)
Die Multiplikation am Schluss vermeidet lediglich eine mögliche -1 bei einem Zeitraum von unter 6 Tagen.


Ergänzung:
Sollen nur die Wochentage des Monats in A1 gezählt werden (also immer Monatserster bis Monatsletzter):
=SUMMENPRODUKT((WOCHENTAG(A1-TAG(A1)+ZEILE(INDIREKT("1:"&32-TAG(A1-TAG(A1)+32)));2)=B1)*1)

Kurzform (0-6 = Sa-Fr):
=RUNDEN((REST(A1-TAG(A1)-B1;7)+29-TAG(A1+32-TAG(A1)))/7;0)
Die Formatierung funktioniert hier natürlich auch.



Erläuterung
Bei der Array-Alternative ist bis Excel-2003 am 05.06.2079 Sense.
Die Zeilenzahl wird ja als Platzhalter verwendet und 65.536 ist die maximale Zeilenzahl; - formatiert als Datum ergibt sich obige Datumsgrenze.
Danach, mit 2^20 Zeilen geht's bis zum 25.11.4770