Power Query: Nummerngruppen von Datensätzen wiederholt als 1 bis 5 nummerieren - Excel-Tipps

Inhaltsverzeichnis

Hinweis

Dies ist einer aus einer Reihe von Artikeln, in denen Lösungen für die Podcast 2316-Herausforderung aufgeführt sind.

Bei meiner Power Query Challenge bestand einer der Schritte darin, das Namensfeld aus jedem fünften Datensatz in die fünf Datensätze zu kopieren. Meine ursprüngliche Lösung war klobig, da die Länge des Namens länger als 2 Zeichen sein würde.

Mehrere Personen, darunter MF Wong, Michael Karpfen, Peter Bartholomew, Chris McNeil und Jamie Rogers, verwendeten eine viel bessere Lösung mit einer Indexspalte.

Lassen Sie uns den Prozess aufgreifen, bei dem die Daten folgendermaßen aussehen:

Datentabelle

Zunächst stellte MF Wong fest, dass Sie die ersten fünf Datensätze nicht benötigen. Du könntest benutzen

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

Entfernen Sie die oberen Reihen

Excel MVP Oz du Soleil von Excel on Fire hat diese fünf ebenfalls entfernt, aber er hat es getan, als sie noch Spalten waren.

Dann Spalte hinzufügen, Indexspalte hinzufügen, Von 0. Dies erzeugt eine neue Spalte von 0 bis NN.

Indexspalte

Wechseln Sie bei ausgewählter neuer Indexspalte zur Registerkarte Transformieren und wählen Sie das Dropdown-Menü Standard aus der Gruppe Registerkarte Registerkarte. Seien Sie vorsichtig: Auf der Registerkarte Spalte hinzufügen gibt es ein ähnliches Dropdown-Menü. Wenn Sie jedoch das Dropdown-Menü auf der Registerkarte Transformieren auswählen, wird das Hinzufügen einer zusätzlichen Spalte verhindert. Wählen Sie Modulo aus dieser Dropdown-Liste und geben Sie an, dass der Rest nach dem Teilen durch 5 angezeigt werden soll.

Modulo

Dann

Modul

Dies erzeugt eine Reihe von Zahlen von 0 bis 4, die immer wieder wiederholt werden.

Ergebnis

Von hier aus ähneln die Schritte zum Übertragen der Mitarbeiternamen meinem Originalvideo.

Fügen Sie eine bedingte Spalte hinzu, die entweder den Namen oder den Wert Null enthält, und füllen Sie sie dann aus. Weitere Möglichkeiten zum Berechnen dieser Spalte finden Sie in Power Query: Verwenden von Else If-Klauseln in bedingten Spalten.

Bedingte Spalte hinzufügen

Füllen Sie nach unten, um den Namen von der ersten bis zur nächsten fünf Zeilen zu füllen.

Vielen Dank an MF Wong für sein Video. Stellen Sie sicher, dass CC für englische Untertitel aktiviert ist.
https://www.youtube.com/watch?v=So1n7sLE_Mg

Peter Bartholomews Video:
https://www.youtube.com/watch?v=gb3OPfF_BNc

Michael Karpfen erkannte auch, dass es nicht notwendig ist, die Summen zu löschen und später wieder hinzuzufügen. Sein M-Code lautet:

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"

Beachten Sie, dass Josh Johnson auch eine Indexspalte verwendet hat, jedoch als einen der ersten Schritte und diese als Sortierung in einem der letzten Schritte.

Kehren Sie zur Hauptseite für die Podcast 2316-Herausforderung zurück.

Lesen Sie den nächsten Artikel in dieser Reihe: Power Query: Extrahieren von 2 linken Zeichen aus einer Spalte.

Interessante Beiträge...