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

如何在Excel Sheet B中使用VLOOKUP公式实现Sheet A的数据格式转换?

用VLOOKUP实现Sheet A到Sheet B的宽格式数据转换

嘿,我来帮你搞定这个Excel数据转换的需求!用下面的公式就能轻松把Sheet A的长格式数据转成Sheet B的宽格式,而且完美支持横纵向批量复制,完全适配你的要求。

Sheet A 原始数据

+-------------+-------+-------+
| Position_ID | Name  | Value |
+-------------+-------+-------+
| 5963650267  | stack | 10    |
| 5963650267  | over  | 20    |
| 5963650267  | flow  | 30    |
| 5963650267  | super | 40    |
| 5963650267  | user  | 50    |
| 5963650268  | stack | 90    |
| 5963650268  | over  | 110   |
| 5963650268  | flow  | 80    |
| 5963650268  | super | 70    |
| 5963650268  | user  | 20    |
+-------------+-------+-------+

Sheet B 预期格式(表头与Position_ID已预先填充)

+-------------+-------+------+------+-------+------+
| Position_ID | stack | over | flow | super | user |
+-------------+-------+------+------+-------+------+
| 5963650267  | 10    | 20   | 30   | 40    | 50   |
| 5963650268  | 90    | 110  | 80   | 70    | 20   |
+-------------+-------+------+------+-------+------+

可批量复制的VLOOKUP公式

假设Sheet B的布局是:

  • 第一个Position_ID在A2单元格
  • 第一个Name表头(stack)在B1单元格

在B2单元格输入以下公式:

=VLOOKUP($A2&"|"&B$1,CHOOSE({1,2},SheetA!$A$2:$A$11&"|"&SheetA!$B$2:$B$11,SheetA!$C$2:$C$11),2,FALSE)

公式关键设计说明:

  • 唯一匹配键:$A2&"|"&B$1把当前行的Position_ID和当前列的Name拼接成唯一标识,用|分隔可以避免内容重叠导致的匹配错误
  • 虚拟查找范围:CHOOSE({1,2},...)构建了一个两列的虚拟数组,第一列是拼接后的匹配键,第二列是对应的Value,给VLOOKUP提供查找依据
  • 混合引用设置:$A2锁定列,纵向复制时始终取当前行的Position_ID;B$1锁定行,横向复制时始终取当前列的Name表头;SheetA的区域用绝对引用$A$2:$A$11,确保复制时范围不偏移

操作步骤:

  1. 在Sheet B的B2输入公式后按回车,得到第一个匹配值
  2. 选中B2,横向拖动填充柄到F2(对应user列),完成第一行所有Name的匹配
  3. 选中B2:F2,纵向拖动填充柄到下一行,完成第二个Position_ID的所有值匹配

可选:XLOOKUP替代方案(适合高版本Excel)

如果你的Excel版本支持XLOOKUP,这个写法更直观:

=XLOOKUP($A2&"|"&B$1,SheetA!$A$2:$A$11&"|"&SheetA!$B$2:$B$11,SheetA!$C$2:$C$11,"",0)

逻辑和VLOOKUP一致,但不需要构建虚拟数组,用起来更省心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:12:45