Power Query: Řešení několika identických záhlaví - Excel tipy

Obsah

Poznámka

Toto je jeden z řady článků s podrobnými řešeními zaslanými pro výzvu Podcast 2316.

V mém původním problému s tvarováním dat jsem narazil na problém velmi brzy v procesu. Příchozí data měla mít mnoho sloupců s nadpisem Q1.

Mnoho sloupců

Ve svém řešení jsem vytvořil pojmenovanou oblast „UglyData“ a importoval ji do Power Query. To vedlo k nešťastnému výsledku přejmenování mých sloupců Power Query na Q1_1.

Přejmenované sloupce

Později, po zrušení motivu, jsem musel z těchto záhlaví extrahovat jen levé dvě postavy.

Existovaly tři samostatné řešení tohoto problému:

  • Wyn Hopkins a snížit úroveň záhlaví
  • MF Wong a zrušte zaškrtnutí možnosti Můj stůl má záhlaví (také navrhl Peter Bartholomew)
  • Jason M a jednoduše smazat sponzorovaná záhlaví (také navrhl Ondřej Malinský a Excel MVP John MacDougall)

První inovace byla od Wyn Hopkins ve společnosti Access Analytic. Místo pojmenovaného rozsahu Wyn převedl data do tabulky pomocí Ctrl + T. V tomto okamžiku došlo k poškození nadpisů, protože Excel převedl nadpisy na:

Převedeno na tabulku: Ctrl + T

Jakmile Wyn vzal data do Power Query, otevřel rozevírací nabídku Použít první řádek jako záhlaví a vybral Použít záhlaví jako první řádek. Nikdy jsem si neuvědomil, že to tam je. Vytvoří krok s názvem Table.DemoteHeaders.

Jako první řádek použijte záhlaví

Ale is Wynovým vylepšením by ještě později musel z těchto hlaviček extrahovat první 2 znaky.

Druhou novinkou je technika MF Wonga. Když vytvořil tabulku, zrušil zaškrtnutí položky Můj stůl má záhlaví!

Můj stůl má záhlaví

Tím je zajištěno, že Excel ponechá několik záhlaví Q1 na pokoji a není nutné extrahovat dodatečnou příponu později.

Více záhlaví Q1

Chápu, že v táboře „Miluji stoly“ jsou lidé. Video MF Wong demonstrovalo, jak by mohl přidat nové zaměstnance napravo od dat a tabulka se automaticky rozšiřuje. Existuje mnoho dobrých důvodů pro použití tabulek.

Ale protože miluji mezisoučty, vlastní zobrazení a filtrování podle výběru, nemám tendenci používat tabulky. Oceňuji tedy řešení od Jasona M. Data uchovával jako pojmenovaný rozsah UglyData. Jakmile importoval data do Power Query, odstranil tyto dva kroky:

Smazané kroky

Nyní, s daty jednoduše v řádku 1, není problém s mnoha sloupci zvanými Q1.

Mnoho sloupců Q1

Zde je kód Wyn Hopkin ukazující 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"

Vraťte se na hlavní stránku výzvy Podcast 2316.

Přečtěte si další článek v této sérii: Power Query: Smazat toto, Smazat ty nebo smazat nic ?.

Zajímavé články...