Excel中如何将含重复名称的重复数据转换为转置格式?
解决方法
方法1:Excel Power Query(推荐)
操作简单无需复杂公式,适合可视化操作:
- 选中你的数据区域,点击「数据」选项卡 → 「从表格/区域」(记得勾选「我的表格有标题」)
- 进入Power Query编辑器后,选中「名称」列,点击「转换」选项卡 → 「透视列」
- 在弹窗中,「值列」选择「分数」,「高级选项」选择「不要聚合」,点击确定
- 最后点击「关闭并上载」,即可得到每个名称单独一行、对应分数横向排列的结果
方法2:Excel公式法
适合习惯用公式的场景,分两步:
- 提取唯一名称:在空白单元格输入
=UNIQUE(A:A)(Excel 365/2021支持,旧版可改为=INDEX(A:A,MATCH(0,COUNTIF(D$1:D1,A:A),0)),按Ctrl+Shift+Enter后下拉),得到所有不重复的名称列表 - 提取对应分数:在第一个名称右侧单元格输入
=TRANSPOSE(FILTER(B:B,A:A=D2))(D2为第一个唯一名称所在单元格),下拉后每个名称的分数会自动横向展开
方法3:Python pandas(适合批量/自动化处理)
如果需要代码批量处理,用pandas可以快速实现:
import pandas as pd # 读取原始数据(假设数据存为csv,列名是"名称"和"分数") df = pd.read_csv("原始数据.csv") # 为每个名称的分数添加序号,用于后续列区分 df["分数序号"] = df.groupby("名称").cumcount() + 1 # 透视转换格式 transformed_df = df.pivot(index="名称", columns="分数序号", values="分数").reset_index() # 重命名列名,让格式更清晰 transformed_df.columns = ["名称"] + [f"分数{num}" for num in transformed_df.columns[1:]] # 保存转换后的数据 transformed_df.to_csv("转换后数据.csv", index=False)
内容的提问来源于stack exchange,提问作者Yumurtlayan_Balina
相关产品推荐
相关产品推荐

