Uwaga
Jest to jeden z serii artykułów opisujących szczegółowo rozwiązania przesłane w ramach wyzwania Podcast 2316.
Po przestudiowaniu wszystkich pomysłów przesłanych przez widzów, wybrałem moje ulubione techniki z każdego filmu. Moje ostateczne rozwiązanie obejmuje następujące kroki:
- Uzyskaj dane z nazwanego zakresu
- Usuń dwa dodatkowe kroki dodane do opcji Promuj nagłówki i Zmień typ. Zapobiega to konieczności łamania sufiksu z ćwiartek. Podziękowania dla Jason M, Ondřej Malinský i Peter Bartholomew za ten pomysł.
- Transponować
- Promuj nagłówki
- Usuń, górne wiersze, pierwsze 5 wierszy. Niezła sztuczka od MF Wonga.
- Zamień Q1 na _Q1. Powtórz przez pozostałe trzy czwarte. Dzięki Jonathan Cooper.
- Podziel według Delimiter w _. Ten niesamowity krok utrzymuje nazwiska w jednej kolumnie i przenosi ćwiartki do następnej kolumny. Zaproponowana przez Fowmy, udoskonalona przez Jonathana Coopera.
- (Ani kroku!) Sięgnij do paska formuły i zmień nazwy kolumn na Pracownik i Dzielnica. Dzięki Josh Johnson
- W kolumnie Pracownik nic nie zamień na null
- Wypełnij
- W kolumnie Quarter zmień null na Total. Pomysł Michaela Karpfena
- Unpivot Other Columns. Zmień nazwę atrybutu na Kategoria na pasku formuły
- Ćwiartki obrotowe
- Przenieś kolumnę całkowitą na koniec
Oto mój ostateczny kod:
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żda osoba wymieniona w tych artykułach lub filmie wygrywa łatkę Excel Guru. Kilka już wysłałem. Jeśli go nie otrzymałeś, zostaw komentarz do filmu poniżej.

Ogólnym zwycięzcą został Bill Szysz. Jego czterowierszowe rozwiązanie wykorzystujące M mówi mi, że muszę dowiedzieć się znacznie więcej o dodatku Power Query! Zobacz jego rozwiązania w Power Query: The World of Bill Szysz.
Obejrzyj wideo
Oto mój ostatni film omawiający rozwiązania i pokazujący ostateczne rozwiązanie.
Wróć do strony głównej wyzwania Podcast 2316.