Poznámka
Toto je jeden zo série článkov s podrobnými riešeniami zaslanými k výzve Podcast 2316.
V mojom pôvodnom probléme s tvarovaním údajov som narazil na problém veľmi skoro v procese. Prichádzajúce údaje mali mať veľa stĺpcov s hlavičkou Q1.

Vo svojom riešení som vytvoril pomenovaný rozsah „UglyData“ a importoval som ho do Power Query. To viedlo k neradostnému výsledku, keď Power Query premenoval moje stĺpce na Q1_1.

Neskôr, po zrušení zrušenia platnosti, som musel z týchto hlavičiek extrahovať iba ľavé dva znaky.
Existujú tri samostatné riešenia tohto problému:
- Wyn Hopkins a degradovať hlavičky
- MF Wong a zrušte začiarknutie políčka Môj stôl má hlavičky (tiež navrhuje Peter Bartolomej)
- Jason M a jednoducho odstráni Propagované hlavičky (tiež navrhuje Ondřej Malinský a Excel MVP John MacDougall)
Prvou novinkou bola Wyn Hopkins zo spoločnosti Access Analytic. Namiesto pomenovaného rozsahu Wyn konvertoval údaje do tabuľky pomocou kombinácie klávesov Ctrl + T. V tomto okamihu došlo k poškodeniu nadpisov, pretože Excel nadpisy previedol na:

Keď Wyn vzal údaje do Power Query, otvoril rozbaľovaciu ponuku Použiť prvý riadok ako hlavičku a vybral Použiť hlavičky ako prvý riadok. Nikdy som si neuvedomil, že to tam je. Vytvára krok s názvom Table.DemoteHeaders.

Ale aj s vylepšením Wyn by z týchto hlavičiek musel neskôr extrahovať prvé 2 znaky.
Druhou novinkou je technika MF Wong. Keď vytvoril stôl, zrušil začiarknutie políčka Môj stôl obsahuje hlavičky!

Takto je zaistené, že program Excel ponechá viac hlavičiek Q1 na pokoji a nie je potrebné extrahovať dodatočnú príponu neskôr.

Rozumiem, že v tábore „Milujem stoly“ sú ľudia. Video MF Wong demonštrovalo, ako môže pridať nových zamestnancov napravo od údajov a tabuľka sa automaticky rozšíri. Existuje veľa dobrých dôvodov na použitie tabuliek.
Ale pretože milujem medzisúčty, vlastné zobrazenia a filtrovať podľa výberu, zvyknem tabuľky používať. Oceňujem teda riešenie od Jasona M. Údaje ponechal ako pomenovaný rozsah UglyData. Hneď ako importoval údaje do aplikácie Power Query, odstránil tieto dva kroky:

Teraz, keď sú údaje jednoducho v riadku 1, neexistuje problém s mnohými stĺpcami nazývanými Q1.

Tu je kód Wyn Hopkinovej, ktorý zobrazuje DemotedHeaders:
let Source = Excel.CurrentWorkbook()((Name="Table1"))(Content), #"Demoted Headers1" = Table.DemoteHeaders(Source), #"Transposed Table1" = Table.Transpose(#"Demoted Headers1"), #"Added Custom" = Table.AddColumn(#"Transposed Table1", "Custom", each if Text.Start((Column1),1) = "Q" then null else (Column1)), #"Filled Down" = Table.FillDown(#"Added Custom",("Custom")), #"Filtered Rows" = Table.SelectRows(#"Filled Down", each ((Custom) "Dept. Total")), #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each not Text.StartsWith((Column1), "Employee")), #"Promoted Headers" = Table.PromoteHeaders(#"Filtered Rows1", (PromoteAllScalars=true)), #"Extracted First Characters" = Table.TransformColumns(#"Promoted Headers", (("Category Description", each Text.Start(_, 2), type text))), #"Reordered Columns" = Table.ReorderColumns(#"Extracted First Characters",("Category Description_1", "Category Description", "Administrative", "Holiday", "PTO/LOA/Jury Duty", "Project A", "Project B", "Project C")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Reordered Columns", ("Category Description_1", "Category Description"), "Attribute", "Value"), #"Reordered Columns1" = Table.ReorderColumns(#"Unpivoted Other Columns",("Category Description_1", "Attribute", "Category Description", "Value")), #"Pivoted Column" = Table.Pivot(#"Reordered Columns1", List.Distinct(#"Reordered Columns1"(#"Category Description")), "Category Description", "Value", List.Sum), #"Reordered Columns2" = Table.ReorderColumns(#"Pivoted Column",("Attribute", "Category Description_1", "Q1", "Q2", "Q3", "Q4")), #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns2",(("Attribute", "Cat Deasc"), ("Category Description_1", "Emp Name"))), #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",(("Emp Name", type text), ("Q1", Int64.Type), ("Q2", Int64.Type), ("Q3", Int64.Type), ("Q4", Int64.Type))), #"Inserted Sum" = Table.AddColumn(#"Changed Type", "Total", each List.Sum(((Q1), (Q2), (Q3), (Q4))), Int64.Type) in #"Inserted Sum"
Vráťte sa na hlavnú stránku výzvy Podcast 2316.
Prečítajte si nasledujúci článok v tejto sérii: Power Query: Odstrániť toto, Odstrániť tieto alebo nezmazať nič ?.