尝试在 Excel 中使用第一列转置两列表格,以将第二列中的值分组

尝试在 Excel 中使用第一列转置两列表格,以将第二列中的值分组

我在 Microsoft Excel 2016 中有一个两列表格,其中第一列仅列出费用类别,第二列列出费用金额。费用类别不是唯一的,会重复多次。

我正在寻找的输出将具有唯一的费用类别作为列标题,并列出该特定费用类别下的所有费用值。

我尝试使用 Excel 查询。在查询中执行两个默认步骤后,我的第一步是按“类别”列对行进行分组,在我的例子中,新列名称设置为“CategoryValues”,该列中的操作为“所有行”。这将生成第一列中包含唯一类别的表格,第二列中包含对表格的引用。下一步是转置表格并将第一行提升为标题。经过这两个步骤后,我将唯一类别作为具有正确标题的列,并且每列的第一行数据包含对另一个表格的表引用,其中第一列是唯一类别,并且值仅属于该类别。

图片 1

此外,我可以单击单个表格引用,这将带我到上面提到的特定类别的表格。可以删除第一列,只剩下单个类别列,其中的值列为行。

图片 2

这正是我想要实现的目标,但涉及所有类别。

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 中。

  1. 选择 A 列并将其复制到 D 列(空列)。使用数据 > 删除重复项,从列表中获取唯一值。我们将在 D1:D7 中获取:

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

  1. 然后选择唯一值,复制。然后右键点击 F1 并选择转置。(它会将复制的列数据粘贴为行。因此在 F1:K1 中我们将得到:

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

  1. 在 F2 中输入此命令并按 Ctrl + Shift + Enter :

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

  1. 然后拖动它直到K9。完成。

希望能帮助到你.. (:

相关内容