我在 Microsoft Excel 2016 中有一个两列表格,其中第一列仅列出费用类别,第二列列出费用金额。费用类别不是唯一的,会重复多次。
我正在寻找的输出将具有唯一的费用类别作为列标题,并列出该特定费用类别下的所有费用值。
我尝试使用 Excel 查询。在查询中执行两个默认步骤后,我的第一步是按“类别”列对行进行分组,在我的例子中,新列名称设置为“CategoryValues”,该列中的操作为“所有行”。这将生成第一列中包含唯一类别的表格,第二列中包含对表格的引用。下一步是转置表格并将第一行提升为标题。经过这两个步骤后,我将唯一类别作为具有正确标题的列,并且每列的第一行数据包含对另一个表格的表引用,其中第一列是唯一类别,并且值仅属于该类别。
此外,我可以单击单个表格引用,这将带我到上面提到的特定类别的表格。可以删除第一列,只剩下单个类别列,其中的值列为行。
这正是我想要实现的目标,但涉及所有类别。
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"{0}[Adv. Fee],
#"Removed Columns" = Table.RemoveColumns(#"Adv Fee",{"Category"})
in
#"Removed Columns"
以下是示例数据
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
应用此非常好的参考对于您的问题,这是我的版本..假设所述数据在 A1:B21 中。
- 选择 A 列并将其复制到 D 列(空列)。使用数据 > 删除重复项,从列表中获取唯一值。我们将在 D1:D7 中获取:
D1 ---> Category D2 ---> Toll D3 ---> DEF D4 ---> Fax D5 ---> Scale D6 ---> Adv. Fee D7 ---> Oil
- 然后选择唯一值,复制。然后右键点击 F1 并选择转置。(它会将复制的列数据粘贴为行。因此在 F1:K1 中我们将得到:
F1 ---> Toll G1 ---> DEF H1 ---> Fax I1 ---> Scale J1 ---> Adv. Fee K1 ---> Oil
- 在 F2 中输入此命令并按 Ctrl + Shift + Enter :
=IFERROR(INDEX($B:$B,SMALL(IF($A:$A=F$1,ROW($B:$B)-MIN(ROW($B:$B))+1),$E2)),"")
- 然后拖动它直到K9。完成。
希望能帮助到你.. (: