Power Query: Upotreba ostalih klauzula u uvjetnim stupcima - Excel savjeti

Sadržaj

Bilješka

Ovo je jedan od niza članaka koji detaljno opisuju rješenja poslana za izazov Podcast 2316.

U svom rješenju za preoblikovanje podataka želio sam način da vidim sadrži li stupac ime zaposlenika ili vrijednost poput Q1, Q2, Q3, Q4. U svom rješenju pretpostavio sam da nitko neće imati ime s 2 znaka, pa sam dodao stupac za izračunavanje duljine teksta u stupcu.

Jason M izbjegao je potrebu za stupcem Length dodavanjem tri klauzule Else If u svoj uvjetni stupac.

Dodajte uvjetni stupac

Uvjetni izračun za zaposlenika tada traži da četvrtina bude null: if (Quarter) = null then (Category Description) else null.

Uvjetni proračun

Evo Jasonovog M koda:

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ý poslao je rješenje koje je koristilo i više klauzula Else If:

Višestruko drugo-ako

Matthew Wykle poslao je rješenje s još jednim načinom identificiranja četvrti. Njegova metoda provjerava da tekst započinje s Q i da je druga znamenka manja od 5:

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

Prepoznajte četvrtine

Christian Neuberger koristio je ovu formulu za dobivanje imena zaposlenika, popunjavanja, a zatim filtriranog stupca 1 da bi obuhvaćao samo Q1, Q2, Q3 ili Q4. Oz Du Soleil također se koristio ovom metodom.

Filtrirani stupac

Excel MVP Ken Puls vjerojatno pobjeđuje sa svojom formulom. Potrebno je podvlačenje kako bi se znalo nije li ovo ime zaposlenika.

Pogledajte cjelovito rješenje Kena u Excel MVP-ovima Attack the Data Cleansing Problem u Power Queryju.

Tražite donju crtu

Povratak na glavnu stranicu za izazov Podcast 2316.

Pročitajte sljedeći članak iz ove serije: Power Query: Suočavanje s više identičnih zaglavlja.

Zanimljivi članci...