大家好,遇见一个excel问题,不知道怎么解决,希望有大佬能帮忙一下
假如我有following data set
First Name
Last Name
Favorite Food 1
Favorite Food 2
Favorite Food 3
Favorite Food 4
John
Smith
KFC
Pizza
Pumpkin
Popsicle
Dave
Keller
Apple
Pear
怎么用excel 把它变成这个样子的
First Name
Last Name
Favorite Food
John
Smith
KFC
John
Smith
Pizza
John
Smith
Pumpkin
John
Smith
Popsicle
Dave
Keller
Apple
Dave
Keller
Pear
2 个赞
方法 1:使用 Excel Power Query
加载数据到 Power Query :
选择数据区域(包括标题行)。
点击 Data
选项卡中的 From Table/Range
。
使用 Power Query 编辑数据 :
在 Power Query 窗口中,选择所有 Favorite Food
列(比如 Favorite Food 1
到 Favorite Food 4
)。
点击 Transform
选项卡下的 Unpivot Columns
。
清理数据 :
删除 Attribute
列,因为你不再需要它。
将 Value
列重新命名为 Favorite Food
。
加载数据到 Excel :
点击 Home
> Close & Load
,将数据加载回 Excel。
现在你的数据已经被转换为所需的格式。
方法 2:手动方法
复制和粘贴 :
将 First Name
和 Last Name
列分别复制多次,直到与所有 Favorite Food
数据行对齐。
例如,John Smith
需要被复制 4 次,Dave Keller
被复制 2 次。
手动重新排列 :
现在依次复制每一行的 Favorite Food
数据,粘贴到 Favorite Food
列中。
清理空行 :
删除所有空行,即那些没有 Favorite Food
的行。
方法 3:使用 Excel 公式
公式生成新数据 :
=INDEX($C$2:$F$3,INT((ROW(A1)-1)/4)+1,MOD(ROW(A1)-1,4)+1)
这假设 First Name
在列 A
,Last Name
在列 B
,而 Favorite Food 1
到 Favorite Food 4
在列 C
到 F
。
将结果复制并粘贴为值。
这三种方法都能帮助你实现你想要的转换。Power Query 是最强大且自动化的选择,而其他方法更适合简单的手动操作。
3 个赞
highlight数据表然后转换成table,再用excel power query, click transform, and unpivot就行了。
1 个赞
没有太好的办法,也许可以用公式一个一个映射,最后ctrl G删除空白列
多谢了,你和chatgpt 的说的unpivot 救了我
1 个赞
vczh
2024 年8 月 16 日 02:18
9
fav1做一遍,2做一遍,3做一遍,4做一遍,连起来排序
1 个赞
hrwang
2024 年8 月 16 日 03:04
15
在Excel中将数据从一种格式转换为另一种格式通常称为"数据透视"。对于您的具体情况,我们需要将宽格式的数据转换为长格式的数据。这可以通过多种方法完成,包括使用公式、VBA宏或手动操作。以下是使用Excel公式解决此问题的方法:
假设您的数据从A1单元格开始,如下所示:
cssCopy code
A B C D E F
1 First Name Last Name Favorite Food 1 Favorite Food 2 Favorite Food 3 Favorite Food 4
2 John Smith KFC Pizza Pumpkin Popsicle
3 Dave Keller Apple Pear
在新的工作表中,首先列出所有可能的组合。这意味着对于每个人,您需要有四行(或者根据最大的Favorite Food列数)。
在新工作表的A列中,输入以下公式来复制First Name(这里假设您的新数据集从A1开始):
excelCopy code
=INDEX(Sheet1!$A$2:$A$3, INT((ROW(A1)-1)/4)+1)
这里的Sheet1!$A$2:$A$3
是原始数据的First Name列的范围。4
是因为每个人有4种最爱的食物。如果有更多的Favorite Food列,这个数字应该相应增加。ROW(A1)-1
是因为我们从第一行开始,所以需要从0开始计数。
在新工作表的B列中,输入以下公式来复制Last Name:
excelCopy code
=INDEX(Sheet1!$B$2:$B$3, INT((ROW(B1)-1)/4)+1)
在新工作表的C列中,输入以下公式来复制Favorite Foods,这个公式稍微复杂一些:
excelCopy code
=INDEX(Sheet1!$C$2:$F$3, INT((ROW(C1)-1)/4)+1, MOD(ROW(C1)-1,4)+1)
这里的Sheet1!$C$2:$F$3
是原始数据的Favorite Foods列的范围。MOD(ROW(C1)-1,4)+1
是用来选择正确的Favorite Food列。
将这些公式向下拖动到足够的行数,以确保覆盖所有数据。
最后,您可能需要清除空白的Favorite Food条目。这可以通过筛选非空白单元格或使用IF语句在公式中进行检查来完成。
请注意,这些公式假设每个人有相同数量的Favorite Foods。如果不是这样,您可能需要调整公式或使用更复杂的方法来处理不同数量的数据。如果您熟悉VBA,编写一个宏可能会更有效,因为它可以处理不同数量的Favorite Foods并自动调整行数。