Excel 如何从一个大表里,根据姓名查找到对应的手机号?
要解决这个问题,我们有三个“武器”可以选择,它们分别是:
- VLOOKUP:经典、普及率最高的“上古神器”。
- XLOOKUP:目前、更强大、更推荐的“王者之剑”。
- INDEX + MATCH:灵活、高手爱用的“瑞士军刀”组合。
对于新手和绝大多数用户来说,直接学习 XLOOKUP
是最佳选择。但我也会介绍VLOOKUP
,因为你在看别人的旧表格时一定会遇到它。
方案一:XLOOKUP (推荐!新一代查找函数)
XLOOKUP
是Microsoft 365和Excel 2021及更高版本中新增的函数,它解决了VLOOKUP
的所有痛点,更简单、更强大。
语法:
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found])
大白话翻译:
=XLOOKUP(你要找什么, 在哪一列找, 从哪一列返回结果, [如果找不到怎么办])
场景示例:
我们有一个“员工信息表”(Sheet1),现在需要在另一个表(Sheet2)中,根据姓名查找手机号。
Sheet1: 员工信息表 (你的“大表”)
A | B | C | |
---|---|---|---|
1 | 工号 | 姓名 | 手机号 |
2 | 1001 | 张三 | 138xxxxxxxx |
3 | 1002 | 李四 | 139xxxxxxxx |
4 | 1003 | 王五 | 137xxxxxxxx |
Sheet2: 待查询表
A | B | |
---|---|---|
1 | 姓名 | 手机号 |
2 | 王五 | |
3 | 赵六 |
操作步骤:
- 在Sheet2的B2单元格中,开始输入公式。
- 输入
=XLOOKUP(
- 你要找什么? -> 点击A2单元格(也就是“王五”)。
- 输入逗号
,
。 - 在哪一列找? -> 切换到Sheet1,用鼠标选中整个B列(姓名列)。
- 输入逗号
,
。 - 从哪一列返回结果? -> 在Sheet1,用鼠标选中整个C列(手机号列)。
- 输入逗号
,
(可选,但推荐)。 - 如果找不到怎么办? -> 输入
"未找到"
(这样如果查不到,会显示“未找到”,而不是丑陋的#N/A
)。 - 输入右括号
)
并按回车。
完整公式如下:
=XLOOKUP(A2, Sheet1!B:B, Sheet1!C:C, "未找到")
结果:
- B2单元格会立刻显示出王五的手机号
137xxxxxxxx
。 - 将B2的公式向下拖动到B3,因为找不到“赵六”,B3会显示我们预设的
未找到
。
XLOOKUP的巨大优势:
- 简单直观:三个核心参数,逻辑清晰。
- 列序无关:要查找的列不必须在返回结果列的左边。你可以从右往左查。
- 性能更好:通常比VLOOKUP快。
- 自带错误处理:第四个参数可以直接定义找不到时的返回值。
方案二:VLOOKUP (经典,但有局限)
VLOOKUP
是过去二十年的霸主,几乎所有老用户都用它。你需要了解它的工作原理,但如果你的Excel版本支持XLOOKUP
,请优先使用XLOOKUP
。
语法:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
大白话翻译:
=VLOOKUP(你要找什么, 在哪个区域找, 从这个区域的第几列返回结果, [要精确匹配还是模糊匹配])
核心限制:VLOOKUP
只能从查找区域的第一列开始查找,并返回其右侧列的数据。
操作步骤(使用同样的场景):
- 在Sheet2的B2单元格中,输入
=VLOOKUP(
- 你要找什么? -> 点击A2单元格(“王五”)。
- 输入逗号
,
。 - 在哪个区域找? -> 切换到Sheet1,用鼠标从“姓名”列开始,选中到“手机号”列(即选中
B:C
列区域)。注意:必须从包含查找值的列开始选! - 输入逗号
,
。 - 从这个区域的第几列返回结果? -> 在我们选择的
B:C
区域中,“姓名”是第1列,“手机号”是第2列。所以我们输入数字2
。 - 输入逗号
,
。 - 要精确匹配还是模糊匹配? -> 输入
FALSE
或0
,代表精确匹配。这是99%的情况下你需要的选项。 - 输入右括号
)
并按回车。
完整公式如下:
=VLOOKUP(A2, Sheet1!B:C, 2, FALSE)
VLOOKUP的痛点:
- 查找列必须在最左边:这是它最大的问题。如果想根据手机号查姓名,
VLOOKUP
就无能为力了(除非你调整数据表的列顺序)。 - 返回列号容易出错:当你的表有几十列时,去数“这是第几列”非常痛苦,而且如果在中间插入或删除了列,这个数字就错了,公式会返回错误结果。
- 错误处理麻烦:如果找不到,会返回
#N/A
,你需要用IFERROR
函数再嵌套一层才能美化结果,如=IFERROR(VLOOKUP(...), "未找到")
。
方案三:INDEX + MATCH (高手组合)
这个组合功能强大且灵活,是XLOOKUP
出现前高手的首选,它完美解决了VLOOKUP
的所有痛点。
MATCH
函数:负责找位置。=MATCH(你要找什么, 在哪一列找, 0)
-> 返回要找的值在该列的第几行。INDEX
函数:负责取数据。=INDEX(从哪一列取数, 第几行)
-> 返回该列指定行的数据。
组合公式:
=INDEX(要返回结果的列, MATCH(你要找的值, 要查找的列, 0))
操作步骤(使用同样的场景):
- 在Sheet2的B2单元格输入
=INDEX(
- 从哪一列取数? -> 切换到Sheet1,选中C列(手机号列)。
- 输入逗号
,
。 - 输入
MATCH(
- 你要找什么? -> 点击Sheet2的A2单元格(“王五”)。
- 输入逗号
,
。 - 在哪一列找? -> 切换到Sheet1,选中B列(姓名列)。
- 输入逗号
,
,然后输入0
(代表精确匹配)。 - 输入两个右括号
))
并按回车。
完整公式如下:
=INDEX(Sheet1!C:C, MATCH(A2, Sheet1!B:B, 0))
这个组合虽然看起来复杂,但逻辑拆分后很清晰,而且和XLOOKUP
一样强大,没有列顺序的限制。
总结与推荐
特性 | XLOOKUP (推荐) | VLOOKUP (了解即可) | INDEX + MATCH (高手备选) |
---|---|---|---|
易用性 | ⭐⭐⭐⭐⭐ (非常简单) | ⭐⭐⭐ (有点绕) | ⭐⭐ (需要理解两个函数) |
功能强度 | ⭐⭐⭐⭐⭐ (强大) | ⭐⭐ (有限制) | ⭐⭐⭐⭐⭐ (强大) |
列序要求 | 无 | 查找列必须在最左 | 无 |
错误处理 | 自带 | 需嵌套IFERROR | 需嵌套IFERROR |
适用版本 | M365, Excel 2021+ | 所有版本 | 所有版本 |
建议:
- 首选
XLOOKUP
:如果你的Excel版本支持,直接学它,忘了VLOOKUP
和INDEX+MATCH
吧。它能解决你99.9%的查找问题。 - 了解
VLOOKUP
:如果你的工作环境中有旧版Excel,或者你需要维护旧表格,花10分钟了解VLOOKUP
的用法和限制就足够了。 - 备用
INDEX+MATCH
:如果你必须在旧版Excel上解决“从右往左查”的问题,那么INDEX+MATCH
就是你的不二之选。