Excel 问题,有大佬知道答案么

大家好,遇见一个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 个赞

ooh ooh ahh ahh

2 个赞

方法 1:使用 Excel Power Query

  1. 加载数据到 Power Query:
  • 选择数据区域(包括标题行)。
  • 点击 Data 选项卡中的 From Table/Range
  1. 使用 Power Query 编辑数据:
  • 在 Power Query 窗口中,选择所有 Favorite Food 列(比如 Favorite Food 1Favorite Food 4)。
  • 点击 Transform 选项卡下的 Unpivot Columns
  1. 清理数据:
  • 删除 Attribute 列,因为你不再需要它。
  • Value 列重新命名为 Favorite Food
  1. 加载数据到 Excel:
  • 点击 Home > Close & Load,将数据加载回 Excel。
  • 现在你的数据已经被转换为所需的格式。

方法 2:手动方法

  1. 复制和粘贴:
  • First NameLast Name 列分别复制多次,直到与所有 Favorite Food 数据行对齐。
  • 例如,John Smith 需要被复制 4 次,Dave Keller 被复制 2 次。
  1. 手动重新排列:
  • 现在依次复制每一行的 Favorite Food 数据,粘贴到 Favorite Food 列中。
  1. 清理空行:
  • 删除所有空行,即那些没有 Favorite Food 的行。

方法 3:使用 Excel 公式

  1. 公式生成新数据:
  • 通过使用以下公式将数据展开到新列中:
=INDEX($C$2:$F$3,INT((ROW(A1)-1)/4)+1,MOD(ROW(A1)-1,4)+1)
  • 这假设 First Name 在列 ALast Name 在列 B,而 Favorite Food 1Favorite Food 4 在列 CF
  • 将结果复制并粘贴为值。

这三种方法都能帮助你实现你想要的转换。Power Query 是最强大且自动化的选择,而其他方法更适合简单的手动操作。

:yaoming:

3 个赞

果然还是要问查特鸡鼻涕么。。。

highlight数据表然后转换成table,再用excel power query, click transform, and unpivot就行了。

1 个赞

导出csv用R melt/cast :troll:

2 个赞

没有太好的办法,也许可以用公式一个一个映射,最后ctrl G删除空白列

多谢了,你和chatgpt 的说的unpivot 救了我

1 个赞

fav1做一遍,2做一遍,3做一遍,4做一遍,连起来排序 :troll:

1 个赞

是猴哥女儿的作业么

大哥,你对daycare是不是有什么误解

1 个赞

叫什么大哥
人家是妹子啦

大妹子瑞瑞哥,你是不是对妹子有什么误解

1 个赞

数据量小的话,直接喂给ChatGPT,让它帮你做

2 个赞

在Excel中将数据从一种格式转换为另一种格式通常称为"数据透视"。对于您的具体情况,我们需要将宽格式的数据转换为长格式的数据。这可以通过多种方法完成,包括使用公式、VBA宏或手动操作。以下是使用Excel公式解决此问题的方法:

  1. 假设您的数据从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
  1. 在新的工作表中,首先列出所有可能的组合。这意味着对于每个人,您需要有四行(或者根据最大的Favorite Food列数)。
  2. 在新工作表的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开始计数。

  1. 在新工作表的B列中,输入以下公式来复制Last Name:

excelCopy code

=INDEX(Sheet1!$B$2:$B$3, INT((ROW(B1)-1)/4)+1)
  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列。

  1. 将这些公式向下拖动到足够的行数,以确保覆盖所有数据。
  2. 最后,您可能需要清除空白的Favorite Food条目。这可以通过筛选非空白单元格或使用IF语句在公式中进行检查来完成。

请注意,这些公式假设每个人有相同数量的Favorite Foods。如果不是这样,您可能需要调整公式或使用更复杂的方法来处理不同数量的数据。如果您熟悉VBA,编写一个宏可能会更有效,因为它可以处理不同数量的Favorite Foods并自动调整行数。

那瑞妹子,你给:monkey:哥写个笛卡儿:chicken: