如何将包含行标题的多行数据转换为两列格式?
将多行多列表格转换为两列格式(保留行标题)
需求说明
现有表格每行首单元格为行标题,需将该行其余列的每个值拆分为独立行,与对应的行标题组成两列表格,数据透视表无法实现此布局。
示例输入
| A | B | C | D | E |
|---|---|---|---|---|
| Row Header 1 | 12 | 34 | 56 | 78 |
| Row Header 2 | 90 | 23 | 45 | 67 |
期望输出
| A | B |
|---|---|
| Row Header 1 | 12 |
| Row Header 1 | 34 |
| Row Header 1 | 56 |
| Row Header 1 | 78 |
| Row Header 2 | 90 |
| Row Header 2 | 23 |
| Row Header 2 | 45 |
| Row Header 2 | 67 |
解决方案
方法1:Excel 365/2021 公式实现
假设数据位于 A1:E3(含表头),使用以下公式直接生成结果:
=HSTACK(TOCOL(IF(B2:E3<>"",A2:A3,""),2),TOCOL(B2:E3,2))
TOCOL(B2:E3,2):将多行多列的数值区域转换为单列,忽略空值IF(B2:E3<>"",A2:A3,""):为每个数值匹配对应的行标题,空值对应空内容TOCOL(...,2):将匹配后的行标题区域转换为单列,忽略空值HSTACK:将行标题列和数值列横向合并为最终的两列表格
方法2:Power Query(适合大量数据)
- 选中表格数据,点击「数据」选项卡 →「从表格/区域」,导入Power Query编辑器
- 选中行标题列(示例中为A列),点击「转换」选项卡 →「逆透视列」→「逆透视其他列」
- 右键点击「属性」列选择「删除」,将「值」列重命名为「B」
- 点击「关闭并上载」,将转换后的数据加载回Excel
内容的提问来源于stack exchange,提问作者substancev
相关产品推荐
相关产品推荐

