Kurs
Die Funktion COUNTIF() ist bei Excel-Nutzern beliebt, weil sie das Zählen von Daten auf Basis einer Bedingung ermöglicht. Beim Umstieg auf Power BI stellen jedoch viele fest, dass es dort keine native COUNTIF()-Funktion gibt.
Zum Glück lässt sich die COUNTIF()-Logik mit verschiedenen DAX-Formeln (Data Analysis Expressions) nachbauen. Dieser Artikel zeigt dir, wie du COUNTIF()-ähnliche Berechnungen in Power BI mit DAX-Funktionen wie CALCULATE(), COUNTROWS(), COUNTA() und FILTER() umsetzt.
Warum es COUNTIF() in Power BI nicht gibt
Im Unterschied zu Excel, das zellbasierte Formeln nutzt, arbeitet Power BI mit tabellenbasierten Berechnungen und Filterkontext. Es operiert auf Tabellen und deren Beziehungen und verwendet DAX für Berechnungen.
Anstatt einzelne Zellen zu referenzieren, arbeitet DAX mit Spalten und wendet Berechnungen dynamisch basierend auf dem Filterkontext an—bestimmt durch Slicer, Zeilen-/Spaltenfilter und Tabellenbeziehungen.
Excel COUNTIF() ist zellorientiert: Formeln werden zeilenweise innerhalb eines Bereichs angewendet. Power BI geht anders vor und nutzt Beziehungen zwischen Tabellen, um Berechnungen zu verfeinern. Statt einzelne Zellen zu scannen, setzt DAX kontextabhängige Filter auf Basis des Berichts.
Was das für dich bedeutet
Als Power BI-Nutzer mit Excel-Erfahrung musst du dich an den tabellenbasierten Ansatz gewöhnen. DAX-Methoden, die auf Spaltenebene arbeiten, sind effizienter als zeilenweise Iterationen.
Im Gegensatz zu Excel musst du in Power BI die passende Methode wählen, um COUNTIF() für dein Datenmodell zu replizieren. Du solltest dir also abgewöhnen, Formeln auf einzelne Zellen anzuwenden, und stattdessen in Tabellen und Filterkontexten denken.
Zentrale DAX-Funktionen für COUNTIF()-Logik
Dein Ansatz zur Umsetzung von COUNTIF() in Power BI hängt von Faktoren ab wie den Beziehungen zwischen Tabellen, fehlenden Werten in den Daten, Datenmenge usw. Manche DAX-Funktionen sind für eine schnellere, effizientere Verarbeitung optimiert.
Überblick über die wichtigsten Funktionen
DAX-Funktionen werden für berechnete Spalten, Measures und Tabellen verwendet. Diese DAX-Funktionen helfen dir, die COUNTIF()-Funktionalität in Power BI nachzubilden.
-
CALCULATE(): Modifiziert den Filterkontext einer Expression und ermöglicht das dynamische Anwenden oder Anpassen von Filtern. So kannst du z. B. den Gesamtumsatz für eine bestimmte Region berechnen. -
COUNTROWS(): Zählt die Zeilenanzahl in einer Tabelle und lässt sich mit Filterfunktionen kombinieren, um bestimmte Zeilen zu zählen, z. B. Bestellungen über 1.000 $. -
COUNTA(): Zählt nicht-leere Werte in einer Spalte und ist hilfreich bei fehlenden Daten, z. B. zählst du nur nicht-leere Kunden-IDs, um valide Datensätze zu berücksichtigen. -
FILTER(): Wird meist mitCALCULATE()undCOUNTROWS()eingesetzt und gibt eine Tabelle basierend auf einer Bedingung zurück, z. B. Bestellungen mit einem Wert über 500 $. -
ALLEXCEPT(): Hebt alle Filter auf, außer den angegebenen. So kannst du z. B. den Gesamtumsatz nach Region berechnen, obwohl Slicer oder Filter aktiv sind. Das ist wichtig bei Aggregationen über Hierarchien. -
RELATEDTABLE(): Liefert eine Tabelle basierend auf bestehenden Beziehungen. Beispiel: Zähle die Bestellungen je Kunde über die Kundenbeziehung.
So greifen sie ineinander
Da COUNTROWS() die Zeilen einer Tabelle zählt, kannst du mit FILTER() zunächst die Zeilen herausfiltern, die eine Bedingung erfüllen. Anschließend begrenzt CALCULATE() den Filterkontext so, dass COUNTROWS() nur die passenden Zeilen berücksichtigt. Hier ein Beispiel für die DAX-Syntax:
Sales over 5 quantities =
CALCULATE(
COUNTROWS(Sales),
FILTER('Sales, 'Sales[Quantity] > 5)
)
CALCULATE() wirkt hier wie das Zusammenführen zweier Ausdrücke. Anstatt mit COUNTROWS() alles zu zählen, begrenzt CALCULATE() die Zählung auf den durch FILTER() definierten Kontext.
Einfache Beispiele für COUNTIF()-Äquivalente in Power BI
Bevor wir in Beispiele einsteigen, wie du COUNTIF() in Power BI umsetzt, lade bitte die Supermarkt-Verkaufsdaten.
Beispiel 1: Anzahl der Bestellungen durch Kundinnen
Die folgende DAX-Syntax berechnet die Anzahl der Bestellungen durch weibliche Kunden.
Orders by female customers =
CALCULATE(
COUNTROWS(Sales),
FILTER(Sales, Sales[Gender] = "Female")
)

Anzahl der Bestellungen durch Kundinnen. Bild: Autor.
-
FILTER(Sales, Sales[Gender] = "Female")filtert die Bestellungen auf weibliche Kunden. -
COUNTROWS(Sales)zählt dankCALCULATE()nicht alle Daten, sondern die gefilterte Tabelle.
Beispiel 2: Bestellungen nach Stadt zählen
Die folgende DAX-Syntax zählt die Anzahl der Bestellungen je Stadt.
Total Orders by City = CALCULATE(COUNTA(Sales[City]), ALLEXCEPT(Sales, Sales[City]))

Anzahl der Bestellungen je Stadt. Bild: Autor.
-
COUNTA(Sales[City])zählt die Anzahl nicht-leerer Werte in der Spalte City. -
ALLEXCEPT(Sales, Sales[City])entfernt alle Filter außer dem Filter auf die SpalteCityin der Tabelle Sales. -
CALCULATE()sorgt dafür, dassCOUNTA()für jede Stadt separat berechnet wird und wirkt damit wieCOUNTIF()in Excel.
Beispiel 3: Alternative mit COUNTROWS
Alternativ kannst du folgende DAX-Syntax nutzen, die COUNTROWS() statt COUNTA() verwendet.
Total Orders by City = CALCULATE(COUNTROWS(Sales), ALLEXCEPT(Sales, Sales[City]))
COUNTROWS() zählt die Zeilen der Tabelle Sales unabhängig von leeren Werten.
Wenn die Spalte City keine Werte enthält, liefern beide Ansätze das gleiche Ergebnis. Sind jedoch Werte fehlend, schließt COUNTA() sie aus, während COUNTROWS() sie einbezieht.
Nutze COUNTROWS(), wenn jede Zeile einen Datensatz repräsentiert, z. B. eine Bestellung. Enthält dein Datensatz potenziell ungültige Einträge, eignet sich COUNTA(), das nur gültige Werte zählt.
Measures für dynamische Berechnungen
Oft brauchst du Measures, die sich dynamisch je nach Tabellenfilter oder Slicer ändern. In diesem Abschnitt zeige ich, wie du COUNTIF() in solchen Szenarien umsetzt.
Szenario: Hochwertige Bestellungen zählen
Hier ein Beispiel, bei dem wir Bestellungen mit einer Gesamtmenge über fünf ermitteln wollen.
High Value Orders = COUNTROWS(FILTER(Sales, Sales[Quantity] > 5))

Anzahl hochwertiger Bestellungen. Bild: Autor.
-
FILTER(Sales, Sales[Quantity] > 5)gibt Bestellungen mit einer Menge über fünf zurück. -
COUNTROWS()zählt die Zeilen der gefilterten Tabelle mit Bestellungen über fünf.
Im Gegensatz zu berechneten Spalten, die Speicher und Modellgröße erhöhen, werden Measures nur bei Bedarf berechnet und sind damit effizienter. Die DAX-Syntax für eine berechnete Spalte sähe so aus:
High Value = IF(Sales[Quantity] > 5, 1, 0)

Berechnete Spalte High Value. Bild: Autor.
Das schreibt in jede Zeile eine statische 1 oder 0. Um die hochwertigen Bestellungen zu zählen, müsstest du ein Measure mit SUM(Sales[High Value]) anlegen.
Stell dir vor, du würdest für jeden Filter berechnete Spalten erstellen—das treibt den Speicherbedarf hoch und macht dich unflexibel.
Die folgende Tabelle zeigt, warum du in der Regel Measures berechneten Spalten vorziehen solltest.
|
Measure |
Berechnete Spalte |
|
Zur Abfragezeit berechnet, reagiert auf Filter |
Statisch, wird beim Laden/Aktualisieren berechnet |
|
Effizienter, nur bei Bedarf berechnet |
Verbraucht Speicher und vergrößert das Modell |
|
Passt sich dynamisch an Filter, Slicer und Visuals an |
Werte bleiben gleich, bis Daten aktualisiert werden |
Fortgeschrittene Techniken und mehrere Bedingungen
Excel COUNTIFS() unterstützt mehrere Bedingungen—das lässt sich auch in Power BI nachbilden.
Mehrere Kriterien / COUNTIFS()-Logik
Hier eine DAX-Syntax, um Bestellungen mit Menge über fünf zu zählen, die per Kreditkarte bezahlt wurden.
Quantity Above 5 and Credit Card =
COUNTROWS(
FILTER(
Sales,
Sales[Quantity] > 5 && Sales[Payment] = "Credit card"
)
)

Anzahl der Bestellungen mit Menge über fünf und Bezahlung per Kreditkarte. Bild: Autor.
Die Formel filtert die Tabelle Sales auf Bestellungen mit Menge > 5 und Zahlungsart Kreditkarte. && steht für den UND-Operator, sodass nur Bestellungen gezählt werden, die beide Bedingungen erfüllen.
Interessierst du dich für Bestellungen, die mindestens eine der Bedingungen erfüllen, nutzt du den ODER-Operator, in DAX dargestellt durch ||.
Quantity Above 5 or Credit Card =
COUNTROWS(
FILTER(
Sales,
Sales[Quantity] > 5 || Sales[Payment] = "Credit card"
)
)

Anzahl der Bestellungen mit Menge über fünf oder Bezahlung per Kreditkarte. Bild: Autor.
Logische Operatoren und Variablen nutzen
DAX-Ausdrücke zur Replikation von COUNTIF() können komplex werden. Variablen machen den Code verständlicher, steuern die Auswertungsreihenfolge und vermeiden doppelte Berechnungen, indem Werte nur einmal gespeichert werden.
Hier ein Beispiel, das Bestellungen von Kundinnen zählt, die entweder per Kreditkarte bezahlt wurden oder eine Menge über fünf haben, unter Nutzung von Variablen.
CreditCard Or Above 5 By Female =
VAR FilteredSales =
FILTER(
Sales,
(Sales[Quantity] > 5 || Sales[Payment] = "Credit card")
&& Sales[Gender] = "Female"
)
RETURN
COUNTROWS(FilteredSales)

Anzahl der Bestellungen durch Kundinnen mit Kreditkartenzahlung oder Menge über fünf. Bild: Autor.
Der Filter wird in einer Variablen gespeichert und in COUNTROWS() verwendet. So kannst du den Ausdruck auch schreiben:
CreditCard Or Above 5 By Female =
VAR MinQuantity = 5
VAR FilteredSales =
FILTER(
Sales,
(Sales[Quantity] > MinQuantity || Sales[Payment] = "Credit card")
&& Sales[Gender] = "Female"
)
VAR Result = COUNTROWS(FilteredSales)
RETURN
Result
Hier werden Mindestmenge, Filter und Ergebnis als Variablen abgelegt. Wie bei der Priorität von Klammern in der Mathematik werden in DAX Bedingungen in Klammern zuerst ausgewertet.
Im obigen Beispiel wird der ODER-Operator || vor dem UND-Operator && ausgewertet, da er in Klammern steht. Das bedeutet: Zuerst werden Bestellungen mit Menge > 5 oder Kreditkartenzahlung gefiltert, danach auf weibliche Kunden eingeschränkt.
COUNTIF() über verknüpfte Tabellen
Arbeitest du mit mehreren Tabellen, kannst du mit COUNTROWS() oder COUNTA() Datensätze zählen, die eine Bedingung in einer verknüpften Tabelle erfüllen, und dabei RELATEDTABLE() nutzen.
RELATEDTABLE() berücksichtigt die Modellbeziehung zwischen zwei Tabellen, etwa 1:1 oder 1:n.
Angenommen, es gibt eine weitere Tabelle Sales2 mit denselben Supermarktverkäufen, und Sales und Sales2 sind über Invoice ID verknüpft.

Beziehung zwischen den Tabellen Sales und Sales2. Bild: Autor.
Mit der folgenden DAX-Syntax ermittelst du die Anzahl der Bestellungen von Mitgliedern, wenn Sales keine Spalte Customer type hat, Sales2 aber schon.
Orders by members =
COUNTROWS(FILTER(RELATEDTABLE(Sales2), Sales2[Customer Type] = "Member"))

Anzahl der Bestellungen von Kunden mit Mitgliedsstatus. Bild: Autor.
-
RELATEDTABLE(Sales2)filtertSales2automatisch auf Zeilen mit derselbenInvoice IDwie in denSales-Daten. -
FILTER()reduziert weiter auf Bestellungen mit"Member", währendCOUNTROWS()die gefilterte Tabelle zählt.
Praxisbeispiele und Integrationstipps
Hier sind einige Praxisfälle und Integrationstipps für die Umsetzung von COUNTIF() in Power BI.
Anwendungsfälle aus der Praxis
Hast du eine Tabelle mit Testergebnissen oder Bestellungen, kannst du mit COUNTROWS() und FILTER() doppelte Einträge zählen. Über eine Notenspalte lässt sich außerdem ermitteln, wie viele bestanden oder durchgefallen sind. Ein weiteres wichtiges COUNTIF()-Äquivalent ist SUMX(), mit dem du z. B. Punktzahlen unter einer Bedingung summierst.
Datenintegrations-Tools
Anstatt Excel- oder Google-Sheets-Dateien immer wieder manuell hochzuladen, kannst du Tools wie Coupler.io zur Automatisierung der Datenextraktion nutzen.
Sobald sich deine Tabelle aktualisiert, spiegelt sich das automatisch im Power BI-Dashboard wider—ohne manuelles Hochladen.
So zeigt Power BI stets aktuelle Daten, während du dich auf Analysen und Entscheidungen konzentrierst. Außerdem kannst du damit mehrere Quellen in einem Dashboard zusammenführen.
Erprobte Tipps für Lesbarkeit und Performance
Verwende berechnete Spalten, wenn Berechnungen vor der Aggregation auf Zeilenebene erfolgen müssen. Greife zu Measures, wenn die Berechnung von Nutzerfiltern oder Slicern abhängt oder du einen aggregierten Wert brauchst statt zeilenweiser Berechnungen.
Das Verständnis des Filterkontexts ist entscheidend, um zwischen Measure und berechneter Spalte zu wählen. Filterkontext entsteht durch Slicer, Filter oder Gruppierungen; Zeilenkontext gilt innerhalb einer Tabellenzeile. Berechnete Spalten nutzen Zeilenkontext und können unnötige Spalten erzeugen, die den Speicherbedarf erhöhen.
Berücksichtige den Filterkontext auch bei Measures. Statt SUM(Sales[Amount]) verwende CALCULATE(SUM(Sales[Amount])), um die Filterung zu steuern. Mit der ersten Variante erhältst du bei aktivem Filter ggf. nicht den gewünschten Wert; mit der zweiten kannst du Filter gezielt beeinflussen.
Vermeide zudem zu viele Iteratoren wie FILTER() in einem einzigen DAX-Ausdruck, da sie bei großen Datensätzen durch zeilenweises Iterieren die Performance bremsen.
Fazit
Auch wenn die native COUNTIF() aus Excel in Power BI fehlt, lassen sich ihre Funktionen mit DAX wie CALCULATE(), COUNTROWS(), COUNTA() und FILTER() sehr gut nachbilden.
Der richtige Ansatz hängt von deinen Daten ab. Bei fehlenden Werten greife zu COUNTA(), bei vollständigen Daten zu COUNTROWS(). Um externe Filter auszuschließen, nutze ALLEXCEPT() innerhalb von CALCULATE().
Denke daran: Deine DAX-Ausdrücke beeinflussen, wie schnell Visuals im Dashboard laden. Schreibe optimierte DAX-Formeln und entscheide bewusst zwischen Measures und berechneten Spalten. Hier findest du weitere DataCamp-Ressourcen zu fortgeschrittenen DAX-Techniken.
Werde ein Power BI Datenanalyst
Beherrsche das beliebteste Business Intelligence Tool der Welt.
Erfahrener Data-Science-Dozent und Biostatistiker mit Kenntnissen in Python, R und maschinellem Lernen.
Power BI Countif() Fragen
Hat Power BI eine native COUNTIF()-Funktion?
Power BI hat keine native COUNTIF()-Funktion, aber es gibt verschiedene Möglichkeiten, sie in Power BI umzusetzen.
Welche Funktionen gibt es für die Umsetzung von COUNTIF() in Power BI?
Die Hauptfunktionen zur Umsetzung von COUNTIF() in Power BI sind CALCULATE(), COUNTROWS(), COUNTA(), FILTER(), ALLEXCEPT() und RELATEDTABLE(). Je nach Datenmodell kombinierst du diese Funktionen, um COUNTIF() in Power BI nachzubilden.
Was ist der Unterschied zwischen COUNTROWS() und COUNTA()?
COUNTROWS() zählt die Zeilenanzahl in den Daten, unabhängig davon, ob die Zeile einen gültigen Eintrag hat, während COUNTA() die Anzahl gültiger (nicht-leerer) Werte in einer Spalte zählt.
Welchen Vorteil haben Measures gegenüber berechneten Spalten?
Measures sind effizienter und benötigen kaum Speicher, da sie on the fly berechnet werden. Berechnete Spalten vergrößern hingegen das Datenmodell und verbrauchen Speicher.
Was sind praktische Anwendungsfälle der COUNTIF()-Umsetzung in Power BI?
Power BI-COUNTIF() hat viele Einsatzmöglichkeiten—vom bedingten Zählen von Datensätzen bis zum Erstellen bedingter Spalten auf Basis von Zählungen und mehr.
