01. 先问你一个问题
一提到 Vlookup,你的第一反应是什么?
两表数据匹配? 根据工号查姓名? 左右列快速核对?
如果我告诉你,Vlookup 还能用来提取手机号码,而且公式短到只有一行——你会不会觉得我在开玩笑?
别急,今天要分享的这个用法,不是什么复杂的嵌套公式,而是一种完全超出常规认知的“野路子”。
很多老手看到这个思路,都忍不住说一句:
“还能这么玩?”
02. 一个真实的头疼场景
假设你从公司系统里导出了一批地址数据,长下面这样(A列):

现在你的任务是:把藏在地址中间的那一串 11 位手机号,单独提取到 B 列。
如果是你,会怎么做?
大部分人第一反应是:
用 FIND 找到数字开始的位置? 用 MID 一段一段截取? 或者写一个长长的数组公式,判断每一位是不是数字?
这些方法不是不行,但要么步骤繁琐,要么公式长到让人不想看。
而今天要介绍的解法,只用了一个函数——Vlookup。
03. 直接看公式,先震你一下
在 B2 单元格输入下面的公式:
=VLOOKUP(0,MID(A2,ROW($1:99),11)*{0,1},2,0)如果你是 Office 2021 及以前版本,输入完后记得按:
Ctrl + Shift + Enter
这是数组公式的三键结束方式。
如果你是 Office 365 或 WPS 最新版,直接回车即可。
然后向下填充,你会发现——手机号全被精准地“揪”出来了。
04. 这个公式到底在干什么?
很多同学看到这个公式,第一反应是:
“这写的什么玩意儿?MID 里面套 ROW,还乘一个 {0,1}?”
别急,我们把公式拆成三步,保证你能看懂。
第一步:暴力“切香肠”
先看最里面这一截:
MID(A2, ROW($1:99), 11)
它的作用是什么?
从第 1 个字符开始,每隔 1 个位置,就切出 11 个字符。
也就是说:
从第 1 位开始切 11 个字符 从第 2 位开始切 11 个字符 从第 3 位开始切 11 个字符 …… 一直切到第 99 位
一共切出 99 段文本。
比如第一行地址是:
张三13327176888地址:江苏省南京市
切出来的结果里,必然有一段恰好是:
13327176888
因为手机号正好是 11 位,而我们从每一位都切了一次,总有一次会“精准命中”那个连续的 11 位数字。
这一步,叫做暴力枚举。

第二步:一列变两列,神来之笔
接下来是这一步:
MID(A2, ROW($1:99), 11) * {0, 1}
这里用了一个非常巧妙的手法:让每一段文本分别乘以 0 和 1。
为什么要这么做?
因为 Excel 有一个铁律:
纯数字文本参与数学运算时,会自动转换成数值 包含中文或字母的文本参与数学运算时,会变成错误值 #VALUE!
所以:
如果这一段是纯数字手机号(比如 18888888888),乘以 {0,1} 后得到:0 和 18888888888也就是两列数据:第一列是 0,第二列是手机号
如果这一段是非纯数字文本(比如 北京市朝阳),乘以 {0,1} 后得到:#VALUE! 和 #VALUE!也就是两列全是错误值

这一步的精髓在于:
把原本一长串“切出来的碎片”,硬生生变成了一个两列的虚拟表格。
第三步:Vlookup 精准“钓鱼”
现在,这个虚拟表格长这样:
第一列:#VALUE! 第二列:#VALUE!第一列:0 第二列:13327176888第一列:#VALUE! 第二列:#VALUE!
然后外面的 Vlookup 是:
=VLOOKUP(0, 上面这个虚拟表格, 2, 0)
它的意思是:
在这个虚拟表格的第一列里,查找 0,找到后返回同一行的第二列。
因为只有手机号那一行,第一列是 0,其他全是错误值,所以 Vlookup 会精准命中那一行,然后返回第二列的手机号。
整个过程,就像是用 0 当鱼饵,把藏在深海里的手机号给“钓”了上来。

05. 还有一个更“野”的变体
除了上面这个公式,江湖上还流传着另一个写法:
=VLOOKUP("*", --MID(A2, ROW($1:30), 11) & "", 1, 0)
这个公式的思路更刁钻:
先用 --(两个负号)把每一段文本强行转成数字 纯数字变成数值,非纯数字变成错误值 再拼接一个空字符串 &"",把所有结果变成文本 然后用通配符 "*" 去查找第一个不是错误值的项
这种方法属于“以毒攻毒”,但原理和前面那个公式殊途同归。
06. 这个技巧真正值得学的是什么?
今天分享这个公式,并不是让你死记硬背它。
真正值得你记住的,是下面两个思维:
① 暴力枚举 + 精准筛选
有时候,不需要精确计算位置,而是用“全覆盖”的方式,把每一种可能都试一遍,然后用条件筛选出正确的那一个。
这种思路在很多文本处理场景里都适用。
② 利用数学运算“筛选”数据类型
*{0,1} 这一招,本质上是利用 Excel 对纯数字和非纯数字的不同处理方式,把一列数据拆成两列,从而制造出 Vlookup 可以查找的条件。
这种“借力打力”的手法,在很多复杂问题中都能派上用场。
07. 写到最后
你在工作中,还见过哪些“不按套路出牌”的函数用法?
欢迎在评论区分享出来,咱们一起开开眼,互相“偷师”几招。
如果这篇文章对你有启发,不妨点个「在看」,或者转发给那个天天被 Excel 折磨的同事。
说不定,他明天就会跑来跟你说:
“兄弟,这个 Vlookup 用法,太牛了!”
夜雨聆风