Power Query: Číselné skupiny záznamov ako 1 až 5 opakovane - tipy pre Excel

Obsah

Poznámka

Toto je jeden zo série článkov s podrobnými riešeniami zaslanými k výzve Podcast 2316.

V mojej Power Query Challenge bolo jedným z krokov zobrať meno poľa z každého piateho záznamu a skopírovať ho do piatich záznamov. Moje pôvodné riešenie bolo neohrabané, rátalo sa s tým, že dĺžka mena bude dlhšia ako 2 znaky.

Niekoľko ľudí vrátane MF Wonga, Michaela Karpfena, Petra Bartolomeja, Chrisa McNeila alebo Jamieho Rogersa použilo oveľa lepšie riešenie týkajúce sa stĺpca Index.

Vyberme postup, pri ktorom údaje vyzerajú takto:

Tabuľka údajov

Najprv MF Wong poznamenal, že nepotrebujete prvých päť záznamov. Môžete použiť

Home, Remove Rows, Remove Top Rows… , 5 Rows.

Odstráňte horné riadky

Týchto piatich sa zbavil aj Excel MVP Oz du Soleil z Excel on Fire, ale urobil to, keď boli ešte stĺpce.

Potom, Pridať stĺpec, Pridať indexový stĺpec, od 0. Týmto sa vygeneruje nový stĺpec 0 až NN.

Stĺpec indexu

Po vybratí nového stĺpca Index prejdite na kartu Transformácia a v rozbaľovacej ponuke Štandardné zo skupiny Karta Počet. Buďte opatrní: podobná rozbaľovacia ponuka sa nachádza na karte Pridať stĺpec, ale výber tej na karte Transformácia zabráni pridaniu ďalšieho stĺpca. V tejto rozbaľovacej ponuke vyberte položku Modulo a potom po vydelení číslom 5 určte, že chcete zvyšok.

Modulo

Potom

Modul

Toto generuje sériu čísel od 0 do 4, ktoré sa opakujú stále dokola.

Výsledok

Od tejto chvíle sú kroky k uvedeniu mien zamestnancov podobné mojmu pôvodnému videu.

Pridajte podmienený stĺpec, ktorý prenáša názov alebo hodnotu Null a potom vyplňte. Viac spôsobov, ako vypočítať tento stĺpec, sa nachádza v Power Query: Používanie klauzúl Else If v podmienených stĺpcoch.

Pridajte podmienený stĺpec

Vyplňte nadol, aby sa vyplnil názov z prvého riadka do ďalších piatich riadkov.

Ďakujem MF Wongovi za jeho video. U titulkov v angličtine nezabudnite zapnúť funkciu CC.
https://www.youtube.com/watch?v=So1n7sLE_Mg

Video Petra Bartolomeja:
https://www.youtube.com/watch?v=gb3OPfF_BNc

Michael Karpfen si tiež uvedomil, že nie je potrebné mazať súčty a neskôr ich pridať späť. Jeho M-kód je:

let Quelle = Excel.CurrentWorkbook()((Name="UglyData"))(Content), #"Höher gestufte Header" = Table.PromoteHeaders(Quelle, (PromoteAllScalars=true)), #"Geänderter Typ" = Table.TransformColumnTypes(#"Höher gestufte Header",(("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))), #"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Geänderter Typ", ("Category Description"), "Attribut", "Wert"), #"Hinzugefügter Index" = Table.AddIndexColumn(#"Entpivotierte andere Spalten", "Index", 1, 1), #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Hinzugefügter Index", "Benutzerdefiniert", each Number.Mod((Index)-1,5)), #"Hinzugefügte benutzerdefinierte Spalte1" = Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte", "Benutzerdefiniert.1", each if (Benutzerdefiniert)=0 then (Attribut) else null), #"Nach unten gefüllt" = Table.FillDown(#"Hinzugefügte benutzerdefinierte Spalte1",("Benutzerdefiniert.1")), #"Neu angeordnete Spalten" = Table.ReorderColumns(#"Nach unten gefüllt",("Benutzerdefiniert.1", "Attribut", "Category Description", "Wert", "Index", "Benutzerdefiniert")), #"Geänderter Typ1" = Table.TransformColumnTypes(#"Neu angeordnete Spalten",(("Benutzerdefiniert", type text))), #"Hinzugefügte benutzerdefinierte Spalte2" = Table.AddColumn(#"Geänderter Typ1", "Benutzerdefiniert.2", each if (Benutzerdefiniert) = "0" then "TOTAL" else "Q"&(Benutzerdefiniert)), #"Neu angeordnete Spalten1" = Table.ReorderColumns(#"Hinzugefügte benutzerdefinierte Spalte2",("Attribut", "Category Description", "Benutzerdefiniert.1", "Wert", "Index", "Benutzerdefiniert", "Benutzerdefiniert.2")), #"Entfernte Spalten" = Table.RemoveColumns(#"Neu angeordnete Spalten1",("Attribut", "Index", "Benutzerdefiniert")), #"Pivotierte Spalte" = Table.Pivot(#"Entfernte Spalten", List.Distinct(#"Entfernte Spalten"(Benutzerdefiniert.2)), "Benutzerdefiniert.2", "Wert", List.Sum), #"Neu angeordnete Spalten2" = Table.ReorderColumns(#"Pivotierte Spalte",("Benutzerdefiniert.1", "Category Description", "Q1", "Q2", "Q3", "Q4", "TOTAL")), #"Sortierte Zeilen" = Table.Sort(#"Neu angeordnete Spalten2",(("Benutzerdefiniert.1", Order.Ascending))), #"Umbenannte Spalten" = Table.RenameColumns(#"Sortierte Zeilen",(("Benutzerdefiniert.1", "Employee Name"))) in #"Umbenannte Spalten"

Všimnite si, že Josh Johnson tiež použil stĺpec Index, ale ako jeden z prvých krokov a použil ho ako triedenie v jednom z posledných krokov.

Vráťte sa na hlavnú stránku výzvy Podcast 2316.

Prečítajte si nasledujúci článok v tejto sérii: Power Query: Extrahovanie ľavých 2 znakov zo stĺpca.

Zaujímavé články...