Power Query: uporaba drugih določb v pogojnih stolpcih - nasveti za Excel

Kazalo

Opomba

To je eden iz serije člankov, ki podrobno opisujejo rešitve, poslane za izziv Podcast 2316.

V svoji rešitvi za preoblikovanje podatkov sem želel, da vidim, ali stolpec vsebuje ime zaposlenega ali vrednost, kot so Q1, Q2, Q3, Q4. V svoji rešitvi sem domneval, da nihče ne bo imel imena z dvema znakoma, zato sem dodal stolpec za izračun dolžine besedila v stolpcu.

Jason M se je izognil potrebi po stolpcu Dolžina, tako da je v svoj pogojni stolpec dodal tri klavzule Else If.

Dodajte pogojni stolpec

Pogojni izračun za zaposlenega nato išče Quarter kot Null: če je (Quarter) = null, potem (Category Description) else null.

Pogojni izračun

Tu je Jasonova koda M:

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ý je poslal rešitev, ki je uporabila tudi več klavzul Else If:

Več drugačnih

Matthew Wykle je poslal rešitev z še enim načinom prepoznavanja četrti. Njegova metoda preveri, ali se besedilo začne s Q, druga številka pa je manjša od 5:

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

Določite četrtine

Christian Neuberger je s to formulo dobil ime zaposlenega, izpolnjen in nato filtrirani stolpec 1, da je vključeval samo Q1, Q2, Q3 ali Q4. Tudi Oz Du Soleil je uporabil to metodo.

Filtriran stolpec

Excel MVP Ken Puls verjetno zmaga s svojo formulo. Išče se podčrtaj, če želite vedeti, ali to ni ime zaposlenega.

Oglejte si celotno Kenovo rešitev v Excelovih MVP-jih Attack the Data Cleansing Problem v Power Query.

Iščem podčrtaj

Vrnite se na glavno stran izziva Podcast 2316.

Preberite naslednji članek v tej seriji: Power Query: Obravnavanje več enakih glav.

Zanimive Članki...