Power Query: Numeroi tietueiden ryhmät 1–5 toistuvasti - Excel-vinkit

Sisällysluettelo

Huomautus

Tämä on yksi artikkelisarjasta, joka sisältää yksityiskohtaiset ratkaisut, jotka lähetettiin Podcast 2316 -haasteeseen.

Power Query Challengessa yksi vaiheista oli ottaa nimikenttä jokaisesta 5. tietueesta ja kopioida se viiteen tietueeseen. Alkuperäinen ratkaisuni oli kömpelö, luottaen siihen, että nimen pituus olisi yli 2 merkkiä.

Useat ihmiset, kuten MF Wong, Michael Karpfen, Peter Bartholomew, Chris McNeil ja Jamie Rogers, käyttivät paljon parempaa ratkaisua, johon sisältyi Index-sarake.

Aloitetaan prosessi, jossa tiedot näyttävät tältä:

Tietotaulukko

Ensinnäkin MF Wong totesi, että et tarvitse viittä ensimmäistä tietuetta. Voisit käyttää

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

Poista ylimmät rivit

Myös Excel MV: n Excel MVP Oz du Soleil pääsi eroon näistä viidestä, mutta hän teki sen, kun ne olivat vielä sarakkeita.

Sitten Lisää sarake, Lisää hakemistosarake, Alkaen 0. Tämä luo uuden sarakkeen 0 - NN.

Hakemisto-sarake

Kun uusi Hakemisto-sarake on valittu, siirry Muunna-välilehteen ja valitse avattavasta Vakio-valikosta Numero-välilehti-ryhmä. Ole varovainen: Lisää sarake -välilehdessä on samanlainen avattava valikko, mutta Muunna-välilehden yhden valitseminen estää ylimääräisen sarakkeen lisäämisen. Valitse avattavasta valikosta Modulo ja määritä sitten, että haluat loput jakamalla 5: llä.

Modulo

Sitten

Moduuli

Tämä tuottaa sarjan numeroita 0: sta 4: een, jotka toistetaan uudestaan ​​ja uudestaan.

Tulos

Sieltä vaiheet työntekijöiden nimien siirtämiseksi ovat samanlaisia ​​kuin alkuperäinen videoni.

Lisää ehdollinen sarake, joka joko tuo nimen tai arvon Null yli ja täytä sitten. Lisää tapoja laskea tämä sarake löytyy Power Query: Else If -lausekkeiden käyttö ehdollisissa sarakkeissa.

Lisää ehdollinen sarake

Täytä nimi täyttääksesi nimen ensimmäisestä rivistä seuraavaan viiteen riviin.

Kiitos MF Wong hänen videostaan. Muista ottaa CC käyttöön englanninkielisissä tekstityksissä.
https://www.youtube.com/watch?v=So1n7sLE_Mg

Peter Bartholomew'n video:
https://www.youtube.com/watch?v=gb3OPfF_BNc

Michael Karpfen huomasi myös, että kokonaissummia ei tarvitse poistaa ja lisätä ne myöhemmin. Hänen M-koodi on:

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"

Huomaa, että Josh Johnson käytti myös Hakemisto-saraketta, mutta yhtenä ensimmäisistä vaiheista ja käytti sitä eräänlaisena yhdessä viimeisistä vaiheista.

Palaa Podcast 2316 -haasteen pääsivulle.

Lue tämän sarjan seuraava artikkeli: Power Query: Vasemman 2 merkin purkaminen sarakkeesta.

Mielenkiintoisia artikkeleita...