Excel长表转宽表:指定列转行格式转换技术求助
Excel长表转宽表解决方案(Group列转表头,匹配DBA值)
问题背景
现有2000+行Excel数据,结构如下:
| Group | Legal Name | DBA |
|---|---|---|
| A | 2023 LTD, Inc | 2023 LTD Inc |
| B | 2023 LTD, Inc | 2023 LTD |
| C | 2023 LTD, Inc | 2023 LTD Inc. |
| A | XYZ Enterprises | XYZ Enterprises Inc. |
| A | Aerotec, LLC | Aerotec |
| B | Aerotec, LLC | Aerotec LLC. |
| C | Aerotec, LLC | Aero |
需转换为以下宽表格式:
| Legal Name | A | B | C |
|---|---|---|---|
| 2023 LTD, Inc | 2023 LTD Inc | 2023 LTD | 2023 LTD Inc. |
| XYZ Enterprises | XYZ Enterprises Inc. | ||
| Aerotec, LLC | Aerotec | Aerotec LLC. | Aero |
尝试过数据透视表值转文本、Power Query逆透视及转置操作未达预期,以下是两种可行方案:
方案一:Power Query 透视转换法(正确步骤)
- 选中原始数据区域,点击「数据」选项卡 → 「从表格/区域」(Excel 2016及以后版本),确认勾选「我的表格有标题」,进入Power Query编辑器
- 在编辑器中,选中Group列和DBA列,点击「转换」选项卡 → 「透视列」
- 在弹出的设置窗口中:
- 值列选择「DBA」
- 高级选项选择「不要聚合」(此为关键设置,之前误选聚合会导致结果不符合预期)
- 点击确定后即可生成目标宽表,最后点击「关闭并上载」将数据导出至Excel
方案二:公式匹配法
无需工具,直接用Excel公式实现:
- 提取唯一Legal Name值:复制原始表的Legal Name列,粘贴到新区域,通过「数据」→「删除重复值」保留唯一值作为行标题
- 在对应Group A的单元格(如B2)输入公式:
(旧版Excel使用数组公式:=XLOOKUP(1,($A2=原表!$B:$B)*(原表!$A:$A="A"),原表!$C:$C,"")=INDEX(原表!$C:$C,MATCH(1,($A2=原表!$B:$B)*(原表!$A:$A="A"),0)),输入后按Ctrl+Shift+Enter确认) - 向右拖动填充公式至Group B、Group C列,将公式中的"A"分别替换为"B"、"C"
- 向下拖动填充所有行,空值自动显示为空白
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

