计算并显示 excel 行中的不同值

count and display distinct values in excel rows

我有一个 table 看起来像这样

name column1 column2 column3
name1 a b b
name2 c a
name3 a a dd

我需要以这种格式在另一个 table 中输入数据:

名称、值的标签、值的出现次数、值的标签、值的出现次数...

name label count label count
name1 a 1 b 2
name2 c 1 a 1
name3 a 2 dd 1

我可以从 table1 复制数据,如果我可以在 table1.table1 的某处列出并显示不同的值。

我尝试使用 pivot table,但它希望数据是 i 列,而不是行。

有什么方法可以在 excel 中完成吗?

谢谢。

从 Excel 2016 年开始,您可以使用“获取和转换”功能。

简而言之,select 您的数据,然后使用数据下的“来自 Table”按钮 |获取并转换”。一个新的查询编辑器 window 打开,select 第一列,right-click 和 select “Unpivot other columns”:你得到一个 table原始数据范围内 row/column 的每个组合对应一行。您可能想要更改列 headers,然后只需关闭查询编辑器并加载未透视的数据。

有关详细信息,请查看 this article from Microsoft

您可以通过使用数据模型并创建度量来在数据透视表的值字段中显示文本值来执行此操作,但我认为 Power Query 会更有效。

  • 将数据加载到 Power Query。功能区中的数据选项卡 > 来自 Table/Range

  • Select 名称列,right-click,逆透视其他列

  • Select 名称和值列,right-click,分组依据。

  • 新列名 =“Count”,操作 =“Count Rows”,列将为空。

  • Select 值和计数列。转到功能区中的转换选项卡,select 合并列在文本列部分下。使用任何你想要的分隔符,我选择了冒号。

  • Right-click 名称列,select 分组依据。随意命名该列,然后对新合并的列执行求和运算。

您的结果列将有错误。在公式栏中替换此代码:

= Table.Group(#"Merged Columns", {"name"}, {{"MergedRows", each List.Sum([Merged]), type text}})

使用此代码,将 MergedRows 替换为您的列 header。

= Table.Group(#"Merged Columns", {"name"}, {{"MergedRows", each Text.Combine([Merged],":"), type text}})
  • 请注意我的 Text.Combine 分隔符与我之前用于合并列的冒号相同。现在您可以 select 编辑完全合并的列,然后在功能区的“转换”选项卡下选择“拆分列”。选择分隔符和冒号。

  • 现在您只需要清理列顺序和 headers。