Oft müssen Sie in einem Projekt die Anzahl der verfügbaren Arbeitstage bestimmen. Als versierter Excel-Kenner denken Sie sofort an NETTOARBEITSTAGE. Doch diese Funktion gibt es in Power BI leider nicht. Lesen Sie hier, wie Sie die Arbeitstage trotzdem ermitteln können.
Die Projekttabelle
Gehen Sie einmal von folgender Tabelle aus:
Um die Anzahl der Tage zwischen Beginn und Ende zu bestimmen, nehmen Sie ganz einfach die Standardfunktion DATEDIFF. Fügen Sie in der Projekttabelle eine neue Spalte und dort folgende Formel ein:
Tage = DATEDIFF(Projekte[Beginn],Projekte[Ende],DAY) + 1
Die Funktion bestimmt die Anzahl von Intervallen zwischen einem Start- und einem Enddatum. Mit DAY im dritten Argument legen Sie fest, dass die Funktion die Differenz in Tagen ausgibt. Möglich wären hier übrigens auch Jahre, Quartale, Monate und Wochen.
Leider kann die Funktion nicht zwischen Arbeitstagen (Montag bis Freitag) und Wochenenden (Samstag und Sonntag) unterscheiden. Sie müssen daher tiefer in die Trickkiste von DAX greifen.
Legen Sie eine Kalendertabelle an
Um diese Aufgabe zu meistern, benötigen Sie eine Kalendertabelle. Diese muss mindestens eine Datumsspalte sowie eine Spalte mit Wochentagszahlen besitzen und den Datumsbereich der drei Projekte umfassen.
Benutzen Sie die DAX-Funktion CALENDAR, um die Kalendertabelle anzulegen. Wechseln Sie in den Bereich Daten und klicken Sie auf dem Reiter Start auf Neue Tabelle.
Kalender = CALENDAR(DATE(2020,1,1),DATE(2020,12,31))
Erzeugen Sie in der neu gebildeten Kalendertabelle anschließend eine Spalte, in der Sie für jedes Datum eine Zahl zwischen 1 und 7 ausgeben. Dazu nutzen Sie die Funktion WEEKDAY.
Wochentagszahl = WEEKDAY(Kalender[Date],2)
Ihre Kalendertabelle sollte nun so aussehen:
Die Kalendertabelle zeigt alle Datumsangaben aus dem Jahr 2020. In der Praxis umfassen Kalendertabellen jedoch weitaus größere Datumsbereiche und verfügen über wesentlich mehr Spalten. Für dieses Beispiel reicht eine derart kleine Kalendertabelle jedoch aus.
Damit haben Sie alles, um die Arbeitstage in den Projekten zu bestimmen. Lesen Sie im nächsten Schritt, wie Sie die richtige DAX-Formel dafür schreiben.
Legen Sie eine Tabelle mit Feiertagen an
Neben den Wochenenden gibt es natürlich auch Feiertage, an denen nicht gearbeitet wird. Daher benötigen Sie neben der Kalendertabelle auch eine Tabelle, in der Sie alle Feiertage auflisten.
Verbinden Sie die Feiertagstabelle mit der Kalendertabelle. Ziehen Sie dazu das Feld Datum aus der Tabelle Feiertage auf das Feld Date in der Tabelle Kalender. Power BI legt eine 1-zu-1-Beziehung an, da es in beiden Feldern nur eindeutige Werte gibt.
Jetzt können Sie in der Kalendertabelle für jedes Datum prüfen, ob es sich um einen Feiertag handelt. Dazu erzeugen Sie in der Kalendertabelle eine neue Spalte, in der Sie für jeden Feiertag ein True ausgeben, für jeden Nicht-Feiertag ein False.
Feiertag = IF( ISBLANK(RELATED(Feiertage[Bezeichnung])), FALSE(), TRUE() )
Die Kalendertabelle hat nun eine neue Spalte:
Die Arbeitstage berechnen
Fügen Sie in der Projekttabelle eine weitere Spalte und dort folgende Formel ein:
Arbeitstage = COUNTX( FILTER( Kalender, Kalender[Date] >= Projekte[Beginn] && Kalender[Date] <= Projekte[Ende] && Kalender[Wochentagszahl] <= 5 && Kalender[Feiertag] = FALSE() ), Kalender[Date] )
Nun sehen Sie für jedes Projekt die Anzahl der tatsächlichen Arbeitstage. In das Projekt A fallen z.B. Christi Himmelfahrt (21.05.2020) und 5 Wochenendtage.
Gehen wir die Formel einmal Schritt für Schritt durch: Am Anfang steht die Funktion COUNTX. Sie zählt die Einträge in einer Tabellenspalte. Sie geben zuerst die Tabelle an, im zweiten Argument eine Spalte dieser Tabelle.
Zählen wollen Sie in der Kalendertabelle die Einträge in der Spalte Date. Damit die Kalendertabelle nur Datumsangaben des Projektzeitraums beinhaltet, filtern Sie die Tabelle mit Hilfe der Funktion FILTER:
-
Nur Datumsangaben zwischen Beginn und Ende
Kalender[Date] >= Projekte[Beginn] && Kalender[Date] <= Projekte[Ende] -
Nur Datumsangaben, bei denen es sich nicht um ein Wochenende handelt
Kalender[Wochentagszahl] <= 5 -
Nur Datumsangaben, die kein Feiertag sind
Kalender[Feiertag] = FALSE()
Das doppelte kaufmännische Und (&&) erlaubt Ihnen übrigens, mehrere Filterbestimmungen in der Funktion zu kombinieren. Weitere Informationen zu den DAX-Operatoren finden Sie hier.
Technisch gesehen erzeugt die Funktion FILTER eine virtuelle DAX-Tabelle, also eine Tabelle, die nur für die Berechnung gebildet und dann wieder aus dem Speicher entladen wird. FILTER liefert damit die Tabelle für das 1. Argument in COUNTX.
Im 2. Argument von COUNTX geben Sie die Spalte Date der virtuellen Kalendertabelle an. Sie enthält nur die Datumsangaben, auf die wir in FILTER gefiltert haben. Da Samstage und Sonntage ausgeschlossen sind, zählt die Funktion nur Montage bis Freitage. Feiertage werden durch den Filterausdruck ebenfalls von der Zählung ausgeschlossen.
Fazit
Auch wenn Power BI (noch) keine eingebaute Funktion zum Ermitteln von Arbeitstagen hat, können Sie diese mit einer Kalendertabelle und guten DAX-Kenntnissen berechnen. Entscheidend sind hier die Funktionen COUNTX und FILTER.
Tage = DATEDIFF(Projekte[Beginn],Projekte[Ende],DAY)