Řazení řádkových položek - tipy pro Excel

Obsah

Poznámka

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

Jedním z problémů mého řešení je, že konečná posloupnost kategorií nemusí nutně odpovídat původní posloupnosti sloupců. Uvědomil jsem si to na samém konci svého videa a protože to nebylo nijak zvlášť důležité, nedělal jsem si s tím starosti.

Josh Johnson však poslal řešení, které to zvládlo. Když Josh řekl, že používá sloupec Index, předpokládal jsem, že to bylo jako Index a Modulo v Power Query: Počet skupin záznamů jako 1 až 5 opakovaně. Ale Joshovo použití bylo úplně jiné.

Poznámka: Tuto metodu použil také Excel MVP John MacDougall, ale zřetězil sloupec indexu na konec popisu kategorie. Podívejte se na Johnovo video zde: https://www.youtube.com/watch?v=Dqmb6SEJDXI a přečtěte si více o jeho kódu zde: Excel MVP Attack the Data Cleansing Problem in Power Query.

Na začátku procesu, kdy měl Josh stále jen šest záznamů, přidal index začínající na 1. Josh klikl do řádku vzorců a přejmenoval sloupec Index na kategorii.

Změněný název v řádku vzorců

Sloupec Kategorie byl nový poslední sloupec. Použil Move, na začátku, aby se přesunul, aby byl první:

Přesunout na začátek

Poté dojde k mnoha dalším krokům. Jsou to kroky, které jsou inovativní, ale dosud byly většinou zahrnuty v ostatních článcích. Po mnoha takových krocích jsem si začal myslet, že čísla kategorie 1 až 6 jsou jen omyl. Myslel jsem, že je možná Josh smaže, aniž by je použil.

Josh Unpivots, pak podmíněný sloupec, pak vyplňte, pak otočte, přidá součet. Zdá se, že ten sloupec Kategorie nikdy nepoužívá. Po mnoha krocích je tady:

Přidejte celkem

Ale v posledních krocích Josh seřadí data podle jména zaměstnance a podle kategorie!

Řadit podle jména zaměstnance než kategorie

V tomto okamžiku může odstranit sloupec Kategorie. Poslední rozdíl: PTO přichází před projektem A, stejně jako v původních sloupcích. Je to příjemný dotek.

Poukážu také na to, že Josh poslal video, jak prochází těmito kroky. Kudos Joshovi za používání klávesových zkratek uvnitř Power Query!

Klávesové zkratky

Tady je Joshův kód:

let Source = Excel.CurrentWorkbook()((Name="UglyData"))(Content), #"Promoted Headers" = Table.PromoteHeaders(Source, (PromoteAllScalars=true)), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",(("Category Description", type text), ("Dept. Total", type number), ("Q1", type number), ("Q2", type number), ("Q3", type number), ("Q4", Int64.Type), ("Employee 1", type number), ("Q1_1", type number), ("Q2_2", type number), ("Q3_3", Int64.Type), ("Q4_4", Int64.Type), ("Employee 2", Int64.Type), ("Q1_5", Int64.Type), ("Q2_6", Int64.Type), ("Q3_7", Int64.Type), ("Q4_8", Int64.Type), ("Employee 3", Int64.Type), ("Q1_9", Int64.Type), ("Q2_10", Int64.Type), ("Q3_11", Int64.Type), ("Q4_12", Int64.Type), ("Employee 4", type number), ("Q1_13", type number), ("Q2_14", type number), ("Q3_15", type number), ("Q4_16", Int64.Type))), #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Category", 1, 1), #"Reordered Columns" = Table.ReorderColumns(#"Added Index",("Category", "Category Description", "Dept. Total", "Q1", "Q2", "Q3", "Q4", "Employee 1", "Q1_1", "Q2_2", "Q3_3", "Q4_4", "Employee 2", "Q1_5", "Q2_6", "Q3_7", "Q4_8", "Employee 3", "Q1_9", "Q2_10", "Q3_11", "Q4_12", "Employee 4", "Q1_13", "Q2_14", "Q3_15", "Q4_16")), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Reordered Columns", ("Category", "Category Description"), "Attribute", "Value"), #"Extracted Text Before Delimiter" = Table.TransformColumns(#"Unpivoted Other Columns", (("Attribute", each Text.BeforeDelimiter(_, "_"), type text))), #"Added Conditional Column" = Table.AddColumn(#"Extracted Text Before Delimiter", "Employee Name", each if not Text.StartsWith((Attribute), "Q") then (Attribute) else null), #"Filled Down" = Table.FillDown(#"Added Conditional Column",("Employee Name")), #"Filtered Rows" = Table.SelectRows(#"Filled Down", each ((Attribute) = "Q1" or (Attribute) = "Q2" or (Attribute) = "Q3" or (Attribute) = "Q4") and ((Employee Name) "Dept. Total")), #"Pivoted Column" = Table.Pivot(#"Filtered Rows", List.Distinct(#"Filtered Rows"(Attribute)), "Attribute", "Value", List.Sum), #"Inserted Sum" = Table.AddColumn(#"Pivoted Column", "Total", each List.Sum(((Q1), (Q2), (Q3), (Q4))), type number), #"Sorted Rows" = Table.Sort(#"Inserted Sum",(("Employee Name", Order.Ascending), ("Category", Order.Ascending))), #"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",("Category")) in #"Removed Columns"

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

Přečtěte si další článek v této sérii: Excel MVP zaútočí na problém čištění dat v Power Query.

Zajímavé články...