如何在使用第一列作为唯一标识符时转置 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"
我需要帮助转置一些采用以下格式的第 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"