ZÄHLENWENN in Power Query

Die ZÄHLENWENN Funktion in Excel zählt das Vorkommen eines Parameters in einem bestimmten Bereich. Dabei wird zuerst der Bereich bestimmt und anschließend das Suchkriterium. Ist das Suchkriterium ein Text, so muss dieser in Anführungszeichen „x“ gesetzt werden, bei einer Zahl ohne Gänsefüßchen. 
Das folgende Beispiel zeigt das Auftauchen verschiedener Star Wars Charaktere in den Hauptfilmen. 

=ZÄHLENWENN(B2:J2;"ja")

Wie geht das in Power Query?

Dafür lade ich zunächst die Rohdaten, also den Bereich von A1:J9 in Power Query 
(Reiter Daten, Aus Tabelle/Bereich

Öffnen im Power Query Editor

Im Erweiterten Editor sind nun die zwei Query Schritte „Quelle“ und „Geänderter Typ“ zu sehen, die Power Query automatisch erstellt hat. Zur besseren Lesbarkeit habe ich im Screenshot die Spaltennamen untereinander formatiert.

Bis hierher war es einfach. Doch nun wird es spannend!

Möge die Macht mit Dir sein!

#"Added Zählenwenn" = Table.AddColumn(#"Geänderter Typ", 
"Vorkommen insgesamt", 
each List.Count(
List.Select(
Record.ToList(_), 
each _ = "ja"
)
) , Int64.Type
)
in
#"Added Zählenwenn"

Hier ist die Beschreibung der einzelnen Befehle in der Reihenfolge, in der sie ausgeführt werden:

  • Record.ToList : wandelt die Einträge (records) in eine Liste um
  • List.Select : findet die Einträge in der Liste, die „ja“ enthalten
  • List.Count : zählt die Einträge in der Liste von List.Select

Da standardmäßig die hinzugefügten Spalten Typ-frei sind, hier aber ja gezählt wird, definiere ich das Resultat noch als Ganzzahl

Lasst uns das noch einen Schritt weiter denken. Was ist, wenn wir das Vorkommen nur in bestimmten Episoden zählen möchten, also zum Beispiel in den letzten drei Hauptfilmen?
Dazu müssen wir die Query um einen Schritt erweitern:

#"Added Zählenwenn" = Table.AddColumn(#"Geänderter Typ", 
"Vorkommen E7-9", 
each List.Count(
List.Select(
Record.ToList(
Record.SelectFields(_, {"Episode 7", "Episode 8", "Episode 9"})
), 
each _ = "ja"
)
) , Int64.Type
)
in
#"Added Zählenwenn"

Hier ist die Erklärung des neuen Schrittes:

  • Record.SelectFields : aus den Einträgen (records) werden nur die Felder in eine Liste umgewandelt, die in der geschweiften Klammer definiert sind
'FieldsForMyTable'[FieldsForMyTable] = "Name" ||
'FieldsForMyTable'[FieldsForMyTable] = "Sales"

Schreibe einen Kommentar