跨工作表关联合并数据:Vlookup与Filter公式无法实现预期效果
问题描述
现有两个工作表需要合并整理:
- 产品数据表(Sheet1):每条产品对应一行,包含产品编码、名称、邮编
- 包装明细表(Sheet2):同一产品对应多行包装明细,包含产品编码、型号、包装尺寸
Sheet1数据:
Product Code Name Pincode 370419466 Tejal Enterprise 401209 370419440 Tejal Enterprise 401209
Sheet2数据(注意:原数据中Prodcut Code为拼写错误,实际应为Product Code):
Product Code MODEL LENTH WIDTH HIGHT 370419466 ECU0550BD, W/ UVM2000 186 40 36 370419466 ECU0550BD, W/ UVM2000 53 33 43 370419466 ECU0550BD, W/ UVM2000 184 46 24 370419440 ECU0900BD 186 40 36 370419440 ECU0900BD 53 33 43
需要在Sheet3中生成合并后的表格,格式如下:
Product Code Name Pincode LENTH WIDTH HIGHT 370419466 Tejal Enterprise 401209 186 40 36 370419466 Tejal Enterprise 401209 53 33 43 370419466 Tejal Enterprise 401209 184 46 24 370419440 Tejal Enterprise 401209 186 40 36 370419440 Tejal Enterprise 401209 53 33 43
尝试过VLOOKUP和FILTER公式但未得到预期结果,寻求可行解决方法。
解决方法
方法1:使用XLOOKUP函数(Excel 365/2021及以上版本)
在Sheet3的B2单元格(对应Name列)输入以下公式,下拉填充至所有行:
=XLOOKUP($A2, Sheet1!$A:$A, Sheet1!$B:$B)
接着在C2单元格(对应Pincode列)输入公式,同样下拉填充:
=XLOOKUP($A2, Sheet1!$A:$A, Sheet1!$C:$C)
注:XLOOKUP会匹配每行的产品编码,返回对应的名称和邮编,不会像VLOOKUP只返回第一个匹配项,完美适配多行明细的场景。
方法2:使用QUERY函数(Excel 365/Google Sheets)
在Sheet3的A1单元格直接输入以下公式,一键生成完整表格:
=QUERY({Sheet2!A:E, Sheet1!B:C}, "SELECT Col1, Col6, Col7, Col3, Col4, Col5 WHERE Col1 IS NOT NULL AND Col6 IS NOT NULL", 1)
解释:
{Sheet2!A:E, Sheet1!B:C}:将Sheet2的所有列与Sheet1的名称、邮编列合并为虚拟数组SELECT指定显示列的顺序:产品编码、名称、邮编、长度、宽度、高度WHERE过滤空行,最后的1表示第一行是表头
方法3:Power Query(推荐,适合大量数据)
- 打开Excel,点击「数据」选项卡 → 「获取数据」→ 「从文件」→ 「从工作簿」,选择当前工作簿
- 在导航器中选中Sheet1和Sheet2,点击「加载到」→ 「仅创建连接」
- 再次点击「数据」→ 「获取数据」→ 「合并查询」→ 「合并查询作为新查询」
- 合并窗口设置:
- 上半部分选Sheet2,选择
Product Code列 - 下半部分选Sheet1,选择
Product Code列 - 合并类型选「左外部」(保留Sheet2所有行,匹配Sheet1对应数据)
- 上半部分选Sheet2,选择
- 点击确定后,在Power Query编辑器中,点击合并列旁的展开按钮,勾选
Name和Pincode,取消「使用原始列名作为前缀」 - 删除不需要的
MODEL列,调整列顺序为需求格式 - 点击「关闭并上载」,选择加载到Sheet3
这个方法适合数据量大的场景,支持一键刷新数据,稳定性比公式更高。
内容的提问来源于stack exchange,提问作者Raghu
相关产品推荐
相关产品推荐

