Power Interogare: Număr de grupuri de înregistrări de la 1 la 5 în mod repetat - Sfaturi Excel

Cuprins

Notă

Acesta este unul dintr-o serie de articole care detaliază soluțiile trimise pentru provocarea Podcast 2316.

În provocarea mea Power Query, unul dintre pași a fost să ia câmpul de nume din fiecare înregistrare a 5-a și să-l copiezi în cele cinci înregistrări. Soluția mea inițială a fost ciudată, mizând pe faptul că lungimea numelui ar fi mai mare de 2 caractere.

Mai multe persoane, printre care MF Wong, Michael Karpfen, Peter Bartholomew, Chris McNeil, Jamie Rogers au folosit o soluție mult mai bună care implică o coloană Index.

Să reluăm procesul în care datele arată astfel:

Tabel de date

În primul rând, MF Wong a menționat că nu aveți nevoie de primele cinci înregistrări. Ai putea folosi

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

Eliminați rândurile de sus

MVP-ul Excel Oz du Soleil de la Excel on Fire a scăpat și de acei cinci, dar a făcut-o când erau încă coloane.

Apoi, Adăugați coloană, Adăugați coloană index, de la 0. Aceasta generează o nouă coloană de la 0 la NN.

Coloana index

Cu noua coloană Index selectată, accesați fila Transformare și alegeți meniul derulant Standard din grupul Tab Număr. Aveți grijă: există o listă verticală similară în fila Adăugați coloană, dar selectând cea din fila Transformare împiedică adăugarea unei coloane suplimentare. Alegeți Modulo din acest meniu derulant și apoi specificați că doriți restul după împărțirea la 5.

Modulo

Apoi

Modul

Aceasta generează o serie de numere de la 0 la 4 repetate din nou și din nou.

Rezultat

De aici, pașii pentru a aduce numele angajaților sunt similari videoclipului meu original.

Adăugați o coloană condițională care aduce fie numele, fie valoarea Null și apoi Completați. Mai multe moduri de a calcula această coloană se găsesc în Power Query: Utilizarea clauzelor Else If din coloanele condiționate.

Adăugați o coloană condițională

Completați în jos pentru a completa numele de la primul rând la următoarele cinci rânduri.

Mulțumesc lui MF Wong pentru videoclipul său. Asigurați-vă că activați CC pentru subtitrări în limba engleză.
https://www.youtube.com/watch?v=So1n7sLE_Mg

Videoclipul lui Peter Bartholomew:
https://www.youtube.com/watch?v=gb3OPfF_BNc

Michael Karpfen a realizat, de asemenea, că nu este nevoie să ștergeți totalurile și să le adăugați mai târziu. Codul său M este:

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"

Rețineți că Josh Johnson a folosit, de asemenea, o coloană Index, dar ca unul dintre primii pași și a folosit-o ca un fel într-unul dintre pașii finali.

Reveniți la pagina principală pentru provocarea Podcast 2316.

Citiți următorul articol din această serie: Power Query: Extracting Left 2 Characters dintr-o coloană.

Articole interesante...