Повер Куери: Бројне групе записа од 1 до 5 у више наврата - Екцел савети

Преглед садржаја

Белешка

Ово је један од низа чланака који детаљно описују решења послана за изазов Подцаст 2316.

У мом Повер Куери Цхалленге-у један од корака био је преузимање поља имена из сваког 5. записа и његово копирање у пет записа. Моје оригинално решење је било незграпно, рачунајући на чињеницу да ће дужина имена бити дужа од 2 знака.

Неколико људи, укључујући МФ Вонг, Мицхаел Карпфен, Петер Бартхоломев, Цхрис МцНеил, Јамие Рогерс користило је много боље решење које укључује индексну колону.

Покупимо процес у којем подаци изгледају овако:

Табела података

Прво је МФ Вонг приметио да вам не треба првих пет записа. Могао би да користиш

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

Уклоните горње редове

И Екцел МВП Оз ду Солеил из Екцел он Фире-а се решио те петорке, али то је учинио док су још били колоне.

Затим додајте колону, додајте колону индекса од 0. Ово генерише нову колону од 0 до НН.

Индексна колона

Када је изабрана нова колона Индекс, идите на картицу Трансформ и одаберите падајући мени Стандард из групе Нумбер Таб. Будите опрезни: сличан је падајући мени на картици Додај колону, али одабир оног на картици Трансформ спречава додавање додатне колоне. Изаберите Модуло из овог падајућег менија, а затим наведите да желите остатак након дељења са 5.

Модуло

Онда

Модул

Ово генерише низ бројева од 0 до 4 који се понављају изнова и изнова.

Резултат

Одавде су кораци за преношење имена запослених слични мом оригиналном видео снимку.

Додајте условну колону која доноси име или вредност Нулл, а затим попуните. Више начина за израчунавање ове колоне налази се у Повер Куери-у: Коришћење осталих клаузула у условним колонама.

Додајте условни ступац

Попуните доле да бисте попунили име из првог реда у следећих пет редова.

Хвала МФ Вонг-у на његовом видеу. Обавезно укључите ЦЦ за натписе на енглеском.
хттпс://ввв.иоутубе.цом/ватцх?в=Со1н7сЛЕ_Мг

Видео Петер Бартхоломев:
хттпс : //ввв.иоутубе.цом/ватцх?в=гб3ОПфФ_БНц

Мицхаел Карпфен је такође схватио да нема потребе брисати укупне износе и касније их враћати. Његов М-код је:

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"

Имајте на уму да је Јосх Јохнсон такође користио индексну колону, али као један од првих корака и користио је то као сортирање у једном од последњих корака.

Вратите се на главну страницу за изазов Подцаст 2316.

Прочитајте следећи чланак из ове серије: Повер Куери: извлачење левих 2 знака из колоне.

Занимљиви Чланци...