Eine der häufigsten Herausforderungen in Power BI ist die Berechnung von Beständen über die Zeit – also Anfangsbestand, Zugänge, Abgänge und Endbestand.
Was in Excel oft über Zwischenspalten oder Formeln gelöst wird, lässt sich in Power BI mit DAX wesentlich eleganter und dynamischer umsetzen.
In diesem Beitrag zeige ich dir Schritt für Schritt, wie du eine vollständige Bestandsrechnung in Power BI modellierst – mit echten Beispieldaten, DAX-Formeln und visuellen Auswertungen.
Ausgangslage: Lagerbewegungen als Basis
Unsere Grundlage ist eine einfache Tabelle mit Lagerbewegungen:
Jede Zeile zeigt, wann ein Produkt ins Lager kommt (Zugang) oder hinausgeht (Abgang).
| Datum | Produkt | Bewegung | Menge |
|---|---|---|---|
| 01.01.2025 | Produkt A | Zugang | 50 |
| 03.01.2025 | Produkt A | Abgang | 10 |
| 05.01.2025 | Produkt A | Zugang | 20 |
Unser Ziel ist klar:
Wir wollen wissen, wie viele Stück pro Produkt aktuell auf Lager sind – und das dynamisch nach Datum, Produkt oder Filter.
Datengrundlage & Datumstabelle anlegen
Importiere deine Excel-Tabelle mit den Bewegungen in Power BI.
Erstelle dann eine Datumstabelle, die alle relevanten Tage abdeckt:
Datum = CALENDAR(MIN('Bewegungen'[Datum]), MAX('Bewegungen'[Datum]))
Verbinde anschließend 'Datum'[Date] mit 'Bewegungen'[Datum], damit alle Zeitbezüge im Bericht korrekt funktionieren.
Netto-Bewegung berechnen
Zuerst brauchen wir eine Kennzahl für die Bewegungen – Zugänge positiv, Abgänge negativ:
Bewegung Menge =
SUMX(
'Bewegungen',
IF(
'Bewegungen'[Bewegung] = "Zugang",
'Bewegungen'[Menge],
-'Bewegungen'[Menge]
)
)
Dieses Measure bildet die Grundlage für alle weiteren Berechnungen.
Endbestand berechnen
Der Endbestand ergibt sich aus der Summe aller Bewegungen bis zu einem bestimmten Datum.
Endbestand =
CALCULATE(
[Bewegung Menge],
FILTER(
ALL('Datum'[Date]),
'Datum'[Date] <= MAX('Datum'[Date])
)
)
Hier passiert Magie:ALL() entfernt den aktuellen Datumsfilter, während FILTER() alle Datensätze bis zum ausgewählten Datum einbezieht.
Das Ergebnis ist ein kumulativer Bestand, den du z. B. in einem Liniendiagramm über die Zeit darstellen kannst.
Anfangsbestand berechnen
Wenn du zusätzlich den Anfangsbestand anzeigen möchtest – etwa den Bestand vom Vortag oder Vormonat – kannst du ihn so berechnen:
Anfangsbestand =
CALCULATE(
[Endbestand],
PREVIOUSDAY('Datum'[Date])
)
PREVIOUSDAY verschiebt den Kontext um einen Tag zurück.
So lässt sich der Bestand des Vortages einfach darstellen oder in einer Tabelle vergleichen.
Aktueller Bestand & Filter
Der aktuelle Bestand lässt sich ebenfalls dynamisch darstellen – z. B. für das heutige Datum oder für bestimmte Filter:
Aktueller Bestand =
CALCULATE(
[Bewegung Menge],
FILTER(
ALL('Datum'),
'Datum'[Date] <= MAX('Datum'[Date])
)
)
Jetzt kannst du dein Modell mit Produkten, Datumsfiltern oder Perioden (Monat, Quartal, Jahr) kombinieren – und Power BI berechnet alles automatisch neu.
Fazit
Mit nur wenigen DAX-Formeln lässt sich eine vollständige Bestandsrechnung in Power BI aufbauen:
- Anfangsbestand, Zugänge/Abgänge und Endbestand
- Zeitlich dynamisch durch die Datumstabelle
- Visuell durch Liniendiagramme oder Tabellen
Damit hast du ein solides Fundament für jede Lager-, Finanz- oder Produktionsanalyse.
📥 Wenn du die Beispieldatei nachbauen möchtest – lade sie dir direkt über den Link im Video herunter.
📺 Schau dir das vollständige Tutorial auf meinem YouTube-Kanal @datenanalyst an, dort erkläre ich die Formeln Schritt für Schritt.
