如何在使用第一列作为唯一标识符时转置 Excel 中的数据?

How to transpose data in Excel while using the 1st column as unique identifier?

我需要帮助转置一些采用以下格式的第 3 方 Excel 输出:

Employee Question Response
Bob Q1 Yes
Bob Q2 No
Bob Q3 100
Jane Q1 No
Jane Q2 No
Jane Q3 50
Tom Q1 No
Tom Q2 Yes
Tom Q3 0

背景: 这是包含最多 10 个问题的调查数据,每个员工必须回答每个问题。因此,如果针对 3 个问题的调查从 10 名员工收集数据,则输出文件将包含 (10x3) 30 行数据

我需要为“业务方面”重新排列这些数据,我意识到所需的输出超出了在 Excel

中简单使用 TRANSPOSE() 的范围

这是我被要求设计的最终结果

Employee Q1 Q2 Q3
Bob Yes No 100
Jane No No 50
Tom No Yes 0

基本上,我需要每个员工 1 行,每个问题和他们的回答水平排列。

这可能吗?如果是这样,将不胜感激任何帮助!

干杯

所以这有效,在 D 列中有一个额外的列:

=A2&B2

因此根据您的数据:

因此,单元格 B13 中的公式:

=INDEX($C:$C,MATCH($A13&B,$D:$D,0))

您的数据存在问题,Jane 有两个 Q2...我不得不更正这一点。

对于您的姓名列表,您可以复制并使用删除重复项或使用 unique()。

这也可以使用 Power Query 完成,可用于 Windows Excel 2010+ 和 Excel 365(Windows 或 Mac)

这是一个没有聚合的简单 Pivot,实际上可以完全从 UI 完成。

我确实更改了您的 table 1,因为 Jane 似乎对 Q2 有两个不同的答案 - 我怀疑数字答案确实是针对 Q3

使用 Power Query

  • Select 数据中的某个单元格 Table
  • Data => Get&Transform => from Table/Range
  • 当 PQ 编辑器打开时:Home => Advanced Editor
  • 记下第 2 行中的 Table 名称
  • 粘贴下面的 M 代码代替您看到的内容
  • 将第 2 行中的 Table 名称更改回最初生成的名称。
  • 阅读评论并探索 Applied Steps 以了解算法
let

//read the data
//change the table name in next line to actual table name in your workbook
    Source = Excel.CurrentWorkbook(){[Name="Table34"]}[Content],

//set the data types
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Employee", type text}, {"Question", type text}, {"Response", type any}}),

//Pivot with no aggregation
    #"Pivoted Column" = Table.Pivot(#"Changed Type", List.Distinct(#"Changed Type"[Question]), "Question", "Response")
in
    #"Pivoted Column"