E

【excel】VLOOKUP的别样用法

肉松 分享 2022-03-17

请看题:
2560030595.png

  如上图所示,是某小区多名业主的信息表。如诸君所见,A列是业主的姓名,B列是一些有趣的信息,要求在C列,使用VLOOKUP函数,提取出B列的手机号码。

  B列的信息真是奇葩,除了手机号码,还有职业,有婚姻状况,有爱好,有杂感,有病情——这是谁胡编乱造?也太有水平了,真是让人不得不佩服……

=VLOOKUP(,MID(B2,ROW($1:$99),11)*{0,1},2,)

  在C2单元格,按<Ctrl+Shift+Enter>组合键,输入上面的数组公式,并向下复制到C2:C6单元格。
简单说下公式的含义和解题的思路。

  我们知道手机号码是由11位数字构成的。MID(B2,ROW($1:$99),11),MID函数依次从B2的第1、2、3、4……直至99个位置提取11位的数据,然后分别乘以0和1,即常量数组{0,1}。

  以C2祝洪忠童鞋的信息为例,如果MID函数的结果为文本,比如“爱吃鱼刺不爱吃鱼真傻”,那么乘以{0,1}后,结果为错误值{ #VALUE!, #VALUE!};如果MID函数的结果为数值,比如18359282475,结果为{0, 18359282475}。

  最终由此建立了一个2列99行的内存数组,作为VLOOKUP函数的第二参数,用作查询范围。

  VLOOKUP采用精确匹配的方式,在以上所述内存数组的第一列查询首个0出现的位置,进而返回相对应的内存数组第二列的结果,于是便得到了手机号码。

结果如下:
2542889331.png

  看了这道题对VLOOKUP函数有没有一个新的认识。

作者:拾玖
链接:https://v2ex.cc/archives/89/

PREV
win11安装自带的安卓子系统,玩转安卓APP
NEXT
【VBA】一段填表代码

评论(5)

发布评论
  1. XI XI

    手机号以1开头,用SEARCH函数貌似效率更高。

  2. 不错啊,最近也在处理这些事情,怎么批量在一列的内容前面添加相同的文字呢?

    1. 使用连字符就好啦
      ="添加文本"&[单元格]
      或者
      ="添加文本"+[单元格]

      1. 学到了,谢谢,我竟然在邮箱里收到了您的评论,有点惊讶,挺好的,哈哈

  3. 学习了。。。