Rozwiązanie złożone do wyzwania Podcast 2316 - wskazówki dotyczące programu Excel

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.

Poprawka Excel Guru

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.

Interesujące artykuły...