You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel如何将含多学科成绩的单行数据转换为Name相同的多行格式

Excel宽表转长表操作方案

你需要把「每人一行、多科目并列」的宽表转换为「每人每科目一行」的长表,可根据你的使用场景选择以下任意一种方法:

方法1:Power Query 自动转换(推荐,适配大量数据)

适合Excel 2016及以上版本、WPS 2019及以上版本,无需写公式:

  • 选中原始数据区域,点击顶部菜单栏「数据」→ 「从表格/区域」,弹窗确认数据包含表头后点击确定,进入Power Query编辑器
  • 按住Ctrl选中所有非Name列,右键点击「取消透视列」;或直接选中Name列右键点击「取消透视其他列」
  • 此时生成「属性」「值」两列新数据,选中「属性」列,点击顶部「转换」→「拆分列」→「按分隔符」,分隔符选择空格,拆分位置选「最右侧的分隔符」
  • 拆分后得到「属性.1」「属性.2」两列,选中「属性.1」列,点击「转换」→「透视列」,值列选择「值」,聚合方式选「不要聚合」
  • 删除多余的序号列,仅保留Name、Subject、Mark三列后,点击「关闭并上载」即可把转换后的数据导出到Excel工作表

方法2:手动转换(适合少量数据)

如果你的数据行数不超过100行,可直接手动操作:

  • 在空白区域先建好新表头:Name、Subject、Mark
  • 把原始表的Name列复制N次(N为每人对应的科目数量,本例中N=2),粘贴到新表的Name列
  • 把原始表的Subject 1列复制到新表Subject列前半段,Subject 2列复制到新表Subject列后半段
  • 把原始表的Mark 1列复制到新表Mark列前半段,Mark 2列复制到新表Mark列后半段即可

方法3:公式自动生成

假设原始数据存放在Sheet1的A1:E100区域(A列为Name,B列为Subject 1,C列为Mark 1,D列为Subject 2,E列为Mark 2):

  • 新表A2(Name列第一行数据)输入公式:=INDEX(Sheet1!$A$2:$A$100,INT((ROW(A1)-1)/2)+1)
  • 新表B2(Subject列第一行数据)输入公式:=IF(MOD(ROW(A1),2)=1,INDEX(Sheet1!$B$2:$B$100,INT((ROW(A1)-1)/2)+1),INDEX(Sheet1!$D$2:$D$100,INT((ROW(A1)-1)/2)+1))
  • 新表C2(Mark列第一行数据)输入公式:=IF(MOD(ROW(A1),2)=1,INDEX(Sheet1!$C$2:$C$100,INT((ROW(A1)-1)/2)+1),INDEX(Sheet1!$E$2:$E$100,INT((ROW(A1)-1)/2)+1))
  • 选中三行公式下拉填充,即可自动生成所有转换后的数据

内容的提问来源于stack exchange,提问作者Sindhu B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:18:03