Power Query: Verwenden anderer Else If-Klauseln in bedingten Spalten - Excel-Tipps

Inhaltsverzeichnis

Hinweis

Dies ist einer aus einer Reihe von Artikeln, in denen Lösungen für die Podcast 2316-Herausforderung aufgeführt sind.

In meiner Lösung zur Neugestaltung der Daten wollte ich herausfinden, ob eine Spalte einen Mitarbeiternamen oder einen Wert wie Q1, Q2, Q3, Q4 enthält. In meiner Lösung ging ich davon aus, dass niemand einen Namen mit 2 Zeichen haben würde, und fügte daher eine Spalte hinzu, um die Länge des Textes in der Spalte zu berechnen.

Jason M hat die Notwendigkeit der Spalte Länge vermieden, indem er seiner bedingten Spalte drei Else If-Klauseln hinzugefügt hat.

Bedingte Spalte hinzufügen

Die bedingte Berechnung für Mitarbeiter sieht dann aus, dass das Quartal Null ist: Wenn (Quartal) = Null, dann (Kategorie Beschreibung), sonst Null.

Bedingte Berechnung

Hier ist Jasons M-Code:

let Source = Excel.CurrentWorkbook()((Name="UglyData"))(Content), #"Transposed Table" = Table.Transpose(Source), #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", (PromoteAllScalars=true)), #"Added Conditional Column" = Table.AddColumn(#"Promoted Headers", "Quarter", each if (Category Description) = "Q1" then (Category Description) else if (Category Description) = "Q2" then (Category Description) else if (Category Description) = "Q3" then (Category Description) else if (Category Description) = "Q4" then (Category Description) else null), #"Added Conditional Column1" = Table.AddColumn(#"Added Conditional Column", "Employee", each if (Quarter) = null then (Category Description) else null), #"Filled Up" = Table.FillUp(#"Added Conditional Column1",("Quarter")), #"Filled Down" = Table.FillDown(#"Filled Up",("Employee")), #"Inserted Distinct Count" = Table.AddColumn(#"Filled Down", "Distinct Count", each List.NonNullCount(List.Distinct(((Category Description), (Employee)))), Int64.Type), #"Filtered Rows1" = Table.SelectRows(#"Inserted Distinct Count", each (Distinct Count) 1), #"Removed Columns1" = Table.RemoveColumns(#"Filtered Rows1",("Distinct Count")), #"Removed Columns" = Table.RemoveColumns(#"Removed Columns1",("Category Description")), #"Filtered Rows" = Table.SelectRows(#"Removed Columns", each ((Employee) "Dept. Total")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Filtered Rows", ("Quarter", "Employee"), "Attribute", "Value"), #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Other Columns",(("Attribute", "Category Description"))), #"Pivoted Column" = Table.Pivot(#"Renamed Columns", List.Distinct(#"Renamed Columns"(Quarter)), "Quarter", "Value"), #"Inserted Sum" = Table.AddColumn(#"Pivoted Column", "Total", each List.Sum(((Q1), (Q2), (Q3), (Q4))), type number), #"Reordered Columns" = Table.ReorderColumns(#"Inserted Sum",("Category Description", "Employee", "Q1", "Q2", "Q3", "Q4", "Total")) in #"Reordered Columns"

Ondřej Malinský schickte eine Lösung, die auch mehrere Else If-Klauseln verwendete:

Mehrere else-if

Matthew Wykle schickte eine Lösung mit einer weiteren Möglichkeit, die Viertel zu identifizieren. Seine Methode überprüft, ob der Text mit Q beginnt und die zweite Ziffer kleiner als 5 ist:

if Text.Start((Attribute),1)="Q" and Number.From(Text.Middle((Attribute),1,1))<5 then Text.Start((Attribute),2) else "Total")

Viertel identifizieren

Christian Neuberger verwendete diese Formel, um den Namen des Mitarbeiters zu erhalten, ausgefüllt und dann Spalte 1 so gefiltert, dass sie nur Q1, Q2, Q3 oder Q4 enthält. Oz Du Soleil verwendete auch diese Methode.

Gefilterte Spalte

Excel MVP Ken Puls gewinnt wahrscheinlich mit seiner Formel. Es wird nach einem Unterstrich gesucht, um festzustellen, ob dies nicht der Name des Mitarbeiters ist.

Siehe Kens vollständige Lösung bei Excel-MVPs. Beheben Sie das Datenbereinigungsproblem in Power Query.

Auf der Suche nach einem Unterstrich

Kehren Sie zur Hauptseite für die Podcast 2316-Herausforderung zurück.

Lesen Sie den nächsten Artikel in dieser Reihe: Power Query: Umgang mit mehreren identischen Headern.

Interessante Beiträge...