Sortering af linjeposter - Excel-tip

Indholdsfortegnelse

Bemærk

Dette er en af ​​en række artikler, der beskriver løsninger sendt til Podcast 2316-udfordringen.

Et af problemerne med min løsning er, at den endelige sekvens af kategorierne ikke nødvendigvis matchede den oprindelige rækkefølge af kolonnerne. Jeg indså dette i slutningen af ​​min video, og da det ikke var særlig vigtigt, bekymrede jeg mig ikke om det.

Imidlertid sendte Josh Johnson en løsning, der håndterede den. Da Josh sagde, at han brugte en indeks-kolonne, antog jeg, at det var som indekset og modulet i Power Query: Antal grupper af poster som 1 til 5 gentagne gange. Men Joshs brug var helt anderledes.

Bemærk: Excel MVP John MacDougall brugte også denne metode, men han sammenkædede indekskolonnen til slutningen af ​​kategoribeskrivelsen. Se Johns video her: https://www.youtube.com/watch?v=Dqmb6SEJDXI og læs mere om hans kode her: Excel MVP'er Attack the Data Cleansing Problem in Power Query.

Tidligt i processen, da Josh stadig kun havde seks poster, tilføjede han et indeks, der startede med 1. Josh klikkede i formellinjen og omdøbte kolonnen Indeks til Kategori.

Ændret navn i formellinjen

Kategorikolonnen var den nye sidste kolonne. Han brugte Move, to Beginning for at flytte det til at være først:

Gå til begyndelsen

Efter dette sker der mange andre trin. De er trin, der er innovative, men hidtil mest er blevet dækket af de andre artikler. Efter mange sådanne trin begyndte jeg at tro, at kategorinumrene 1 til 6 bare var en fejltagelse. Jeg troede, at Josh muligvis ville slette dem uden at bruge dem.

Josh Unpivots, derefter betinget kolonne, så udfyld, og drej derefter, tilføjer summen. Han ser aldrig ud til at bruge den kategorikolonne. Efter mange trin er han her:

Tilføj total

Men så i de sidste trin sorterer Josh dataene efter medarbejdernavn og derefter kategori!

Sorter efter medarbejdernavn end kategori

På dette tidspunkt kan han slette kategorikategorien. Den sidste forskel: PTO kommer før projekt A, ligesom det havde i de originale kolonner. Det er et dejligt strejf.

Jeg vil også påpege, at Josh sendte en video af ham igennem disse trin. Kudos til Josh for at bruge tastaturgenveje inde i Power Query!

Tastaturgenveje

Her er Joshs kode:

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"

Gå tilbage til hovedsiden for Podcast 2316-udfordringen.

Læs den næste artikel i denne serie: Excel MVP'er angriber datarensningsproblemet i strømforespørgsel.

Interessante artikler...