Teljesítménylekérdezés: Rekordcsoportok száma 1-5-ig többször - Excel tippek

Tartalomjegyzék

jegyzet

Ez egy olyan cikksorozat, amely a Podcast 2316 kihíváshoz elküldött megoldásokat részletezi.

A Power Query Challenge-ben az egyik lépés az volt, hogy minden ötödik rekordból kivettem a névmezőt, és lemásoltam az öt rekordra. Az eredeti megoldásom nehézkes volt, számítva arra, hogy a név hossza 2 karakternél hosszabb lesz.

Többen, köztük MF Wong, Michael Karpfen, Peter Bartholomew, Chris McNeil, Jamie Rogers sokkal jobb megoldást használtak egy Index oszlop bevonásával.

Folytassuk az eljárást, ahol az adatok így néznek ki:

Adattábla

Először MF Wong megjegyezte, hogy nincs szüksége az első öt lemezre. Használhatnád

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

Távolítsa el a felső sorokat

Excel MVP Oz du Soleil az Excel on Fire-től is megszabadult ettől az öttől, de akkor tette, amikor még oszlopok voltak.

Ezután, Oszlop hozzáadása, Index-oszlop hozzáadása, 0-tól. Ez új 0-tól NN-ig terjedő oszlopot generál.

Index oszlop

Az új Index oszlop kiválasztásával lépjen az Átalakítás fülre, és válassza a Normál legördülő menüt a Szám fül csoportból. Legyen óvatos: az Oszlop hozzáadása lapon van egy hasonló legördülő menü, de az Átalakítás lapon kiválasztva megakadályoz egy további oszlop hozzáadását. Válassza a Modulo elemet ebből a legördülő menüből, majd adja meg, hogy a maradékot el szeretné osztani 5-tel.

Modulo

Azután

Modul

Ez 0 és 4 közötti számsort generál, amelyet megismételnek.

Eredmény

Innentől kezdve a munkavállalói nevek áthelyezésének lépései hasonlóak az eredeti videómhoz.

Adjon hozzá egy feltételes oszlopot, amely vagy átadja a nevet, vagy a Null értéket, majd töltse ki. Ennek az oszlopnak a kiszámításához további módokat talál a Power Query: Egyéb feltétel használata a feltételes oszlopokban.

Feltételes oszlop hozzáadása

Töltse le, hogy kitöltse a nevet az első sorból a következő öt sorba.

Köszönet MF Wongnak a videójáért. Ne felejtse el bekapcsolni a CC-t az angol feliratokhoz.
https://www.youtube.com/watch?v=So1n7sLE_Mg

Peter Bartholomew videója:
https://www.youtube.com/watch?v=gb3OPfF_BNc

Michael Karpfen rájött arra is, hogy nem szükséges törölni az összegeket, és később visszaadni. M-kódja:

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"

Ne feledje, hogy Josh Johnson egy Index oszlopot is használt, de a legelső lépések egyikeként ezt rendezésként használta az utolsó lépések egyikében.

Térjen vissza a Podcast 2316 kihívás főoldalára.

Olvassa el a sorozat következő cikkét: Power Query: Bal 2 karakter kibontása egy oszlopból.

érdekes cikkek...