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

如何在Excel中高效实现带层级列标题表格的Unpivot操作?

问题描述

我被这个问题困扰快一周了,不太会用Excel公式,一直在尝试用查询解决问题。附上当前的表格和期望的目标表格,有没有更简单的实现方法?提前感谢,期待任何建议。

当前样本表格

CityLALANew YorkNew YorkAuklandAukland
Time of Day / DateDayNightDayNightDayNight
2022-08-0130152510205
2022-08-0230152510205
2022-08-0330152510205
2022-08-0430152510205
2022-08-0530152510205
2022-08-0630152510205
2022-08-0730152510205
2022-08-0830152510205

目标表格(推测结构)

DateCityTime of DayValue
2022-08-01LADay30
2022-08-01LANight15
2022-08-01New YorkDay25
2022-08-01New YorkNight10
2022-08-01AuklandDay20
2022-08-01AuklandNight5
............

简便实现方法

方法1:Power Query(推荐,无复杂公式)

这是批量处理最省心的方式,步骤如下:

  1. 选中原始数据区域(包含两行表头和所有日期行),点击数据选项卡 → 从表格/区域,勾选「我的表格有标题」,进入Power Query编辑器。
  2. 选中前两行(表头行),点击转换 → 合并列,选择分隔符为-,新列名设为City-Time。
  3. 点击转换 → 将第一行用作标题,此时列标题变为City、LA-Day、LA-Night等。
  4. 选中第一列(原日期列),点击逆透视列 → 逆透视其他列,生成Attribute和Value列。
  5. 选中Attribute列,点击转换 → 拆分列 → 按分隔符,选择-,拆分出City和Time of Day两列。
  6. 调整列顺序为:Date(原第一列)、City、Time of Day、Value。
  7. 点击关闭并上载,即可得到目标格式的表格。

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

如果不想用Power Query,可直接用公式批量提取:
假设原始数据在A1:G9区域(A1=City,A2=Time of Day/Date,A3:A9为日期):

  1. 在新表格中设置表头:A1=Date,B1=City,C1=Time of Day,D1=Value。
  2. 在A2输入公式:
    =INDEX($A$3:$A$9,INT((ROW()-2)/6)+1)
    
  3. 在B2输入公式:
    =INDEX({"LA","LA","New York","New York","Aukland","Aukland"},MOD(ROW()-2,6)+1)
    
  4. 在C2输入公式:
    =INDEX({"Day","Night","Day","Night","Day","Night"},MOD(ROW()-2,6)+1)
    
  5. 在D2输入公式:
    =INDEX($B$3:$G$9,INT((ROW()-2)/6)+1,MOD(ROW()-2,6)+1)
    
  6. 选中A2:D2,下拉填充至所有数据行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:20:29