对名称在 Excel 上的项目进行分类

Categorizing items with names on Excel

我正在尝试重新排列矩阵元素以对与名称匹配的项目进行分类。例如:

原始矩阵:

Name, item1, item2, item3 ... 

A,    apple, banana, cherry

B,    milk, apple, cherry

C,    milk, chocolate, apple

然后我想把这个矩阵转换成:

items, names

apple, A B C 

banana, A

cherry, A B

milk, B C

chocolate, C

目前我只是在excel上复制粘贴,效率很低。有什么方法可以对物品进行分类吗?

请参阅此 article 了解如何在您的 Excel 版本上使用 Power Query。它在 Excel 2010 Professional Plus 和更高版本 中可用。我的演示使用 Excel 2016.

步骤是:

  1. 将您的源数据添加到强大的查询编辑器;
  2. 突出显示所有 Item 列,使用 Transform 选项卡下的 Unpivot Columns 函数来取消透视这些列,然后按 Value 然后按 Name 列;
  3. 使用 Transform 选项卡下的 Group By 功能将 Name 列按 Value 列分组,如下所示:

  1. 返回到右侧应用步骤部分的最后一步,转到公式栏将公式List.Sum([Name])的这一部分替换为Text.Combine([Name]," ");
  2. 关闭并加载结果到新工作表(默认)。

如果你所有的名字都是一致的,并且在字符串的前面或结尾没有任何隐藏的空格,你应该得到以下结果:

这是我的Power QueryM代码供大家参考:

let
    Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Name", type text}, {" item1", type text}, {" item2", type text}, {" item3", type text}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Name"}, "Attribute", "Value"),
    #"Sorted Rows" = Table.Sort(#"Unpivoted Columns",{{"Value", Order.Ascending}, {"Name", Order.Ascending}}),
    #"Trimmed Text" = Table.TransformColumns(#"Sorted Rows",{{"Value", Text.Trim, type text}}),
    #"Cleaned Text" = Table.TransformColumns(#"Trimmed Text",{{"Value", Text.Clean, type text}}),
    #"Grouped Rows" = Table.Group(#"Cleaned Text", {"Value"}, {{"names", each Text.Combine([Name]," "), type text}})
in
    #"Grouped Rows"

如果您有任何问题,请告诉我。干杯:)