Versuch, zwei Spaltentabellen in Excel umzuwandeln, wobei die erste Spalte verwendet wird, um die Werte in der zweiten Spalte zu gruppieren

412
PancakeBimmer

Ich habe eine zweispaltige Tabelle in Microsoft Excel 2016, in der in der ersten Spalte einfach eine Aufwandskategorie und in der zweiten Spalte der Aufwandsbetrag aufgeführt ist. Die Kostenkategorie ist nicht eindeutig und wird mehrmals wiederholt.

Die Ausgabe, nach der ich suche, hat eindeutige Ausgabenkategorien als Spaltenüberschriften und alle unter dieser spezifischen Kostenkategorie aufgeführten Ausgabenwerte.

Ich habe es mit Excel Query versucht. Nach zwei Standardschritten in der Abfrage besteht mein erster Schritt darin, Zeilen nach "Kategoriespalte" zu gruppieren, wobei der neue Spaltenname in meinem Fall auf "Kategoriewerte" gesetzt ist und die Operation in dieser Spalte "Alle Zeilen" ist. Dies erzeugt eine Tabelle mit eindeutigen Kategorien in der ersten Spalte und Verweise auf Tabellen in der zweiten Spalte. Der nächste Schritt besteht darin, die Tabelle zu transponieren und die erste Zeile in die Überschriften zu bringen. Nach diesen beiden Schritten habe ich eindeutige Kategorien als Spalten mit korrekten Kopfzeilen und die erste Datenzeile für jede Spalte enthält Tabellenverweise auf eine andere Tabelle, wobei die erste Spalte eine eindeutige Kategorie und Werte nur in dieser Kategorie ist.

Image 1

Außerdem kann ich auf eine einzelne Tabellenreferenz klicken, um zur oben genannten Tabelle für eine bestimmte Kategorie zu gelangen. Dort kann die erste Spalte gelöscht werden, und es wird eine einzelne Kategoriespalte mit Werten als Zeilen angezeigt.

Image 2

Dies ist genau das, was ich mit allen Kategorien erreichen möchte.

let Source = Excel.Workbook(File.Contents("C:\Users\Pancake\Documents\TestQuery.xlsx"), null, true), TblExpenses_Table = Source{[Item="TblExpenses",Kind="Table"]}[Data], #"Grouped Rows" = Table.Group(TblExpenses_Table, {"Category"}, {{"CategoryValues", each _, type table}}), #"Transposed Table" = Table.Transpose(#"Grouped Rows"), #"Promoted Headers" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]), #"Adv Fee" = #"Promoted Headers"[Adv. Fee], #"Removed Columns" = Table.RemoveColumns(#"Adv Fee",{"Category"}) in #"Removed Columns" 

Hier ist ein Beispieldaten

Category Amount Toll 3.65 Toll 4.8 Toll 120.35 Toll 10 DEF 23.32 DEF 15 Toll 13.25 Toll 122.35 DEF 8.66 Fax 2 Fax 2 Scale 11 Scale 2 Toll 3.5 Adv. Fee 0.99 Adv. Fee 12.95 Oil 17.98 Fax 2 Fax 5 DEF 30 
1
Ich weiß nicht, wie man das mit Power Query macht, aber es könnte mit der VBA-Programmierung geschehen. Ron Rosenfeld vor 6 Jahren 0

1 Antwort auf die Frage

0
p._phidot_

Wenn Sie diese sehr gute Referenz auf Ihr Q anwenden, ist hier meine Version. Angenommen, die besagten Daten sind in A1: B21.

  1. Wählen Sie Spalte A aus und kopieren Sie sie in Spalte nach D (leere Spalte). Verwenden Sie Daten> Duplikate entfernen, um eindeutige Werte aus der Liste zu erhalten. Wir bekommen in D1: D7:

D1 ---> Category D2 ---> Toll D3 ---> DEF D4 ---> Fax D5 ---> Scale D6 ---> Adv. Fee D7 ---> Oil

  1. Wählen Sie dann die eindeutigen Werte aus, kopieren Sie. Klicken Sie dann mit der rechten Maustaste auf F1 und wählen Sie "Transponieren". (Die kopierten Spaltendaten werden als Zeilen eingefügt. In F1: K1 erhalten Sie:

F1 ---> Toll G1 ---> DEF H1 ---> Fax I1 ---> Scale J1 ---> Adv. Fee K1 ---> Oil

  1. In F2 geben Sie dies ein und drücken Sie Strg + Shift + Enter:

=IFERROR(INDEX($B:$B,SMALL(IF($A:$A=F$1,ROW($B:$B)-MIN(ROW($B:$B))+1),$E2)),"")

  1. Dann ziehen Sie es bis K9. Erledigt.

Ich hoffe es hilft.. (: