对名称在 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.
步骤是:
- 将您的源数据添加到强大的查询编辑器;
- 突出显示所有
Item
列,使用 Transform
选项卡下的 Unpivot Columns 函数来取消透视这些列,然后按 Value
然后按 Name
列;
- 使用
Transform
选项卡下的 Group By 功能将 Name
列按 Value
列分组,如下所示:
- 返回到右侧应用步骤部分的最后一步,转到公式栏将公式
List.Sum([Name])
的这一部分替换为Text.Combine([Name]," ")
;
- 关闭并加载结果到新工作表(默认)。
如果你所有的名字都是一致的,并且在字符串的前面或结尾没有任何隐藏的空格,你应该得到以下结果:
这是我的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"
如果您有任何问题,请告诉我。干杯:)
我正在尝试重新排列矩阵元素以对与名称匹配的项目进行分类。例如:
原始矩阵:
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.
步骤是:
- 将您的源数据添加到强大的查询编辑器;
- 突出显示所有
Item
列,使用Transform
选项卡下的 Unpivot Columns 函数来取消透视这些列,然后按Value
然后按Name
列; - 使用
Transform
选项卡下的 Group By 功能将Name
列按Value
列分组,如下所示:
- 返回到右侧应用步骤部分的最后一步,转到公式栏将公式
List.Sum([Name])
的这一部分替换为Text.Combine([Name]," ")
; - 关闭并加载结果到新工作表(默认)。
如果你所有的名字都是一致的,并且在字符串的前面或结尾没有任何隐藏的空格,你应该得到以下结果:
这是我的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"
如果您有任何问题,请告诉我。干杯:)