Power Query: Številčne skupine zapisov od 1 do 5 večkrat - nasveti za Excel

Kazalo

Opomba

To je eden iz serije člankov, ki podrobno opisujejo rešitve, poslane za izziv Podcast 2316.

V mojem izzivu Power Query je bil eden od korakov, da sem iz vsakega 5. zapisa vzel ime in ga kopiral v pet zapisov. Moja prvotna rešitev je bila okorna, računala sem, da bo dolžina imena daljša od 2 znakov.

Številni ljudje, med njimi MF Wong, Michael Karpfen, Peter Bartholomew, Chris McNeil, Jamie Rogers, so uporabili veliko boljšo rešitev, ki je vključevala indeksni stolpec.

Poglejmo postopek, kjer so podatki videti takole:

Tabela podatkov

Najprej je MF Wong opozoril, da ne potrebujete prvih pet zapisov. Lahko bi uporabil

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

Odstranite zgornje vrstice

Teh pet se je znebil tudi Excel MVP Oz du Soleil iz Excel on Fire, vendar je to storil, ko so bili še stolpci.

Nato Dodaj stolpec, Dodaj stolpec indeksa, od 0. To ustvari nov stolpec od 0 do NN.

Indeksni stolpec

Z izbranim novim stolpcem Indeks pojdite na zavihek Preoblikovanje in izberite spustni meni Standard iz skupine Številčni zavihek. Bodite previdni: podoben spustni meni je na zavihku Dodaj stolpec, vendar izbira tistega na zavihku Preoblikovanje prepreči dodajanje dodatnega stolpca. V tem spustnem meniju izberite Modulo in nato po deljenju s 5 določite, da želite preostanek.

Modulo

Potem

Modul

To ustvari niz številk od 0 do 4, ki se ponavljajo znova in znova.

Rezultat

Od tu naprej so koraki za prenos imen zaposlenih podobni mojemu prvotnemu videoposnetku.

Dodajte pogojni stolpec, ki pripelje ime ali vrednost Null in nato Izpolni. Več načinov za izračun tega stolpca najdete v Power Query: Uporaba drugih stavkov v pogojnih stolpcih.

Dodajte pogojni stolpec

Izpolnite, da izpolnite ime iz prve vrstice v naslednjih pet vrstic.

Hvala MF Wongu za njegov video. Vključite CC za angleške napise.
https://www.youtube.com/watch?v=So1n7sLE_Mg

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

Michael Karpfen je prav tako spoznal, da ni treba izbrisati skupnih vsot in jih dodati pozneje. Njegova M-koda 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"

Upoštevajte, da je Josh Johnson uporabil tudi stolpec Indeks, vendar kot enega prvih korakov in ga uporabil kot razvrščanje v enem od zadnjih korakov.

Vrnite se na glavno stran izziva Podcast 2316.

Preberite naslednji članek v tej seriji: Power Query: pridobivanje levih 2 znakov iz stolpca.

Zanimive Članki...