vlookup提取多行:Excel VLOOKUP 提取多行数据,多种方法与实用技巧
在 Excel 数据处理中,VLOOKUP 函数无疑是最常用且强大的工具之一,它能根据指定条件,在表格或区域中查找数据并返回结果,标准的 VLOOKUP 函数有一个限制:它只能返回查找结果所在行的第一个匹配列的值,当您需要从查找结果所在行提取多列数据时,标准 VLOOKUP 就显得力不从心了。
本文将介绍几种利用 VLOOKUP(以及其更强大的堂兄弟 XLOOKUP,适用于 Excel 365 和 2021)来提取多行匹配数据的方法,帮助您更灵活地处理复杂的数据查找任务。
场景描述:
假设我们有一个销售记录表(Sheet1),包含产品 ID、产品名称、数量和销售额。
| A (产品ID) | B (产品名称) | C (数量) | D (销售额) | | :-------- | :----------- | :------- | :--------- | | 001 | 苹果 | 100 | 5000 | | 002 | 香蕉 | 150 | 6000 | | 003 | 橙子 | 80 | 4000 | | 001 | 苹果 | 120 | 5400 | | 004 | 葡萄 | 200 | 8000 |

我们有一个产品信息表(Sheet2),包含产品 ID、产品类别和供应商。
| E (产品ID) | F (产品类别) | G (供应商) | | :-------- | :----------- | :--------- | | 001 | 水果 | A公司 | | 002 | 水果 | B公司 | | 003 | 水果 | C公司 | | 004 | 蔬菜 | D公司 |
我们的目标是:根据产品 ID 在产品信息表中查找其类别和供应商信息,并将这些信息添加到销售记录表中对应的行。
使用辅助列 + VLOOKUP (适用于旧版 Excel)

这是最经典且兼容性最好的方法,通过创建辅助列来间接实现。
- 在销售记录表(Sheet1)中,选择一个空白列(E 列),输入辅助查找条件,假设我们想先找到产品 ID,然后查找类别。
- 在 E2 单元格输入:
=VLOOKUP(A2, Sheet2!$E:$G, 2, FALSE)A2:要查找的产品 ID。Sheet2!$E:$G:产品信息表中包含产品 ID 和要查找信息的区域(这里查找类别,位于第 2 列)。2:要返回的值所在的列序号(类别在第 2 列)。FALSE:精确匹配。
- 按下
Ctrl + Shift + Enter(数组公式),然后向下拖动填充。注意: 在旧版 Excel 中,输入完公式后需要按Ctrl + Shift + Enter,而不是仅仅Enter,这样才能让公式对每一行都进行查找。 - 重复步骤 1-3,在 F2 单元格输入:
=VLOOKUP(A2, Sheet2!$E:$G, 3, FALSE),同样需要按Ctrl + Shift + Enter并向下填充,查找供应商信息。
销售记录表中就有了产品类别和供应商两列。
使用辅助列 + INDEX + MATCH (适用于旧版 Excel)
INDEX + MATCH 组合比 VLOOKUP 更灵活,尤其在查找范围不包含表头或需要查找非首列时,原理类似,也是通过辅助列。

- 在销售记录表(Sheet1)中,选择一个空白列(E 列)。
- 在 E2 单元格输入:
=MATCH(A2, Sheet2!$E:$E, 0)A2:要查找的产品 ID。Sheet2!$E:$E:产品信息表中产品 ID 的查找范围。0:精确匹配。
- 按下
Ctrl + Shift + Enter,然后向下拖动填充。 - 在 F2 单元格输入:
=IF(E2, INDEX(Sheet2!$F:$F, E2), "")E2:包含匹配位置的辅助列。INDEX(Sheet2!$F:$F, E2):根据辅助列 E2 中的匹配位置号,从产品信息表的 F 列(类别列)中提取对应的值。IF(E2, ... , ""):E2 有值(即找到匹配),则返回 INDEX 的结果,否则返回空字符串。
- 按下
Ctrl + Shift + Enter,然后向下拖动填充。 - 在 G2 单元 格输入:
=IF(E2, INDEX(Sheet2!$G:$G, E2), ""),同样需要按Ctrl + Shift + Enter并向下填充,查找供应商信息。
使用 XLOOKUP (适用于 Excel 365 和 2021)
XLOOKUP 是 VLOOKUP 的升级版,功能更强大,也更简洁。
- 在销售记录表(Sheet1)中,选择一个空白列(E 列)。
- 在 E2 单元格输入:
=XLOOKUP(A2, Sheet2!$E:$E, Sheet2!$F:$F)A2:要查找的产品 ID。Sheet2!$E:$E:产品信息表中产品 ID 的查找数组。Sheet2!$F:$F:产品信息表中要返回的值的数组(类别列)。- 可选: 可以添加
0或FALSE作为匹配模式,但 XLOOKUP 默认是精确匹配。
- 按下
Enter(无需 Ctrl+Shift+Enter),然后向下拖动填充。 - 在 F2 单元格输入:
=XLOOKUP(A2, Sheet2!$E:$E, Sheet2!$G:$G),按下Enter并向下拖动填充,查找供应商信息。
使用 Office 365 的动态数组函数 (FILTER 函数)
这是目前最简洁、最符合现代 Excel 思维的方式,尤其适用于需要一次性提取多列且可能有多个匹配项的情况(虽然本例中产品 ID 唯一,但方法通用)。
- 在销售记录表(Sheet1)中,选择一个足够大的空白区域(E2:F6),输入以下公式:
=FILTER(Sheet2!$F:$G, Sheet2!$E:$E = A2)
Sheet2!$F:$G:要提取的数据范围(类别和供应商)。Sheet2!$E:$E = A2:查找条件,即产品信息表中产品 ID 等于销售记录表中当前行的产品 ID。
- 按下
Enter。 - 公式会自动返回所有匹配行(本例中只有一行,因为产品 ID 唯一)的数据,结果会自动扩展到所需的行和列数。
- VLOOKUP + 辅助列:经典,兼容性好,但需要多个辅助列或复杂数组公式。
- INDEX + MATCH + 辅助列:灵活,兼容性好,是 VLOOKUP 的有力替代品。
- XLOOKUP:简洁,功能强大,是新版本 Excel 的推荐函数。
- FILTER:现代动态数组函数,语法简洁,功能强大,适合提取多列或多行数据。
选择哪种方法取决于您的 Excel 版本、个人偏好以及具体的数据结构和需求,对于提取多行多列数据,FILTER 函数无疑是目前最优雅的解决方案,希望这些方法能帮助您更高效地使用 Excel!
相关文章:
文章已关闭评论!










