Poznámka
Toto je jeden zo série článkov s podrobnými riešeniami zaslanými k výzve Podcast 2316.
Po preštudovaní všetkých nápadov od divákov som si z každého videa vybral svoje obľúbené techniky. Moje konečné riešenie používa tieto kroky:
- Získajte údaje z pomenovaného rozsahu
- Odstráňte dva ďalšie kroky pridané do sekcie Propagácia hlavičiek a zmeny typu. To zabráni tomu, aby ste museli zlomiť príponu zo štvrtí. Ďakujem Jasonovi M, Ondřejovi Malinskému a Petrovi Bartolomejovi za túto myšlienku.
- Transponovať
- Propagujte hlavičky
- Odstrániť, Horné riadky, Horných 5 riadkov. Pekný trik od MF Wonga.
- Vymeňte Q1 za _Q1. Opakujte ďalšie tri štvrtiny. Ďakujem Jonathan Cooper.
- Rozdelené oddeľovačom na _. Tento úžasný krok udržiava mená v jednom stĺpci a posúva štvrtiny do ďalšieho stĺpca. Navrhol Fowmy, zdokonalil Jonathan Cooper.
- (Nie je to krok!) Siahnite do panela vzorcov a premenujte stĺpce na Zamestnanci a Štvrťrok. Vďaka Josh Johnson
- V stĺpci Zamestnanec nič nenahrádzajte hodnotou null
- Vyplňte
- V stĺpci Štvrtina zmeňte hodnotu null na Celkom. Táto myšlienka od Michaela Karpfena
- Zrušiť otočenie ostatných stĺpcov. Na paneli vzorcov premenujte Attrib na Category
- Pivotné štvrte
- Presunúť celkový stĺpec na koniec
Tu je môj konečný kód:
let Source = Excel.CurrentWorkbook()((Name="UglyData"))(Content), #"Transposed Table" = Table.Transpose(Source), #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", (PromoteAllScalars=true)), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",(("Category Description", type text), ("Administrative", type number), ("Holiday", Int64.Type), ("PTO/LOA/Jury Duty", Int64.Type), ("Project A", type number), ("Project B", type number), ("Project C", type number))), #"Removed Top Rows" = Table.Skip(#"Changed Type",5), #"Replaced Value" = Table.ReplaceValue(#"Removed Top Rows","Q1","_Q1",Replacer.ReplaceText,("Category Description")), #"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","Q2","_Q2",Replacer.ReplaceText,("Category Description")), #"Replaced Value2" = Table.ReplaceValue(#"Replaced Value1","Q3","_Q3",Replacer.ReplaceText,("Category Description")), #"Replaced Value3" = Table.ReplaceValue(#"Replaced Value2","Q4","_Q4",Replacer.ReplaceText,("Category Description")), #"Split Column by Delimiter" = Table.SplitColumn(#"Replaced Value3", "Category Description", Splitter.SplitTextByDelimiter("_", QuoteStyle.Csv), ("Employee", "Qtr")), #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",(("Employee", type text), ("Qtr", type text))), #"Replaced Value4" = Table.ReplaceValue(#"Changed Type1","",null,Replacer.ReplaceValue,("Employee")), #"Filled Down" = Table.FillDown(#"Replaced Value4",("Employee")), #"Replaced Value5" = Table.ReplaceValue(#"Filled Down",null,"Total",Replacer.ReplaceValue,("Qtr")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Replaced Value5", ("Employee", "Qtr"), "Attribute", "Value"), #"Pivoted Column" = Table.Pivot(#"Unpivoted Other Columns", List.Distinct(#"Unpivoted Other Columns"(Qtr)), "Qtr", "Value", List.Sum), #"Reordered Columns" = Table.ReorderColumns(#"Pivoted Column",("Employee", "Attribute", "Q1", "Q2", "Q3", "Q4", "Total")) in #"Reordered Columns"
Každý, kto sa zmieni v týchto článkoch alebo videách, vyhráva opravu Excel Guru. Niekoľko som už poslal e-mailom. Ak žiaden nedostanete, zanechajte komentár k videu nižšie.
Celkovým víťazom je Bill Szysz. Jeho štvorriadkové riešenie využívajúce M mi hovorí, že sa musím o Power Query naučiť oveľa viac! Pozrite si jeho riešenia na stránkach Power Query: The World of Bill Szysz.
Pozeraj video
Tu je moje záverečné video, ktoré pojednáva o riešeniach a zobrazuje konečné riešenie.
Vráťte sa na hlavnú stránku výzvy Podcast 2316.