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

如何在Excel或Google Sheets中对指定数据进行Unpivoting操作?

Excel/Google Sheets 宽表转窄表(Unpivot)方法

源数据为宽表结构:第一列是姓名(Name),后续列是不同科目(如Math、English),每行对应一个人的各科成绩;目标是转换为三列的窄表:Name(姓名)、Subject(科目)、Score(成绩),每行记录单个人单科成绩。

Excel 操作方法

方法1:Power Query(推荐,适合大量数据)

  • 选中源数据区域,点击顶部菜单栏「数据」→「从表格/区域」,确认数据包含表头后进入Power Query编辑器
  • 在编辑器中选中所有科目列(如Math、English等列)
  • 点击「转换」→「逆透视列」→「逆透视其他列」(若仅选中科目列,直接选「逆透视列」即可)
  • 双击列名,将「属性」改为Subject,「值」改为Score
  • 点击「关闭并上载」,生成转换后的窄表

方法2:公式法(适合少量数据)

假设源数据在A1:C4(A列=Name,B列=Math,C列=English):

  • 在E2输入公式:=INDEX($A:$A,INT((ROW()-2)/2)+2) (公式中2为科目数量,需根据实际科目数调整)
  • 在F2输入公式:=INDEX($B$1:$C$1,MOD(ROW()-2,2)+1)
  • 在G2输入公式:=INDEX($B:$C,INT((ROW()-2)/2)+2,MOD(ROW()-2,2)+1)
  • 下拉三个公式直到出现空值,最后修改表头为Name、Subject、Score

Google Sheets 操作方法

方法1:QUERY+FLATTEN公式(快速实现)

假设源数据在A1:C4(A列=Name,B列=Math,C列=English):

  • 在E1、F1、G1分别输入表头:Name、Subject、Score
  • 在E2输入以下公式,按回车自动生成结果:
    =QUERY(FLATTEN(A2:A4&"|"&B1:C1&"|"&B2:C4), "SELECT SPLIT(Col1, '|') WHERE Col1 IS NOT NULL", 0)
    

方法2:Power Query(同Excel逻辑)

  • 选中源数据区域,点击「数据」→「数据连接器」→「从表格」
  • 进入编辑器后选中所有科目列,点击「转换」→「逆透视列」→「逆透视其他列」
  • 修改列名为Subject和Score,关闭并上载数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:45:13