你们好,我是星光。
数组
我们今天继续聊聊VLOOKUP函数,有人问我为啥这么执迷于VLOOKUP函数,聊了一期又一期的。这个说来话就长了,这牵扯到俺的一点小隐私。和不少表亲同样,VLOOKUP是俺掌握的第一个查询函数,可谓之为初恋,嘿!那谁,您说,初恋怎么可以忘记呢?ide
由于没法忘记,因而反复回忆,因此结果就成了这个样子……。函数
说正事,别拍砖,快看题:spa
如上图所示,是某小区多名业主的信息表。blog
如诸君所见,A列是业主的姓名,B列是一些杂乱的信息。图片
要求在C列,提取出B列的手机号码。内存
B列的信息真是奇葩,除了手机号码,还有职业,有婚姻情况,有爱好,有杂感,有病情——ci
这是谁胡编乱造?也太有水平了,真是让人不得不佩服……it
——暂停几分钟再向下看,请先使用VLOOKUP解题儿吧。class
暂停回来,我们看用到的公式:
=VLOOKUP(0,MID(B2,ROW($1:$99),11)*{0,1},2,0)
在C2单元格输入上面的数组公式,按住Ctrl和Shift键不放,再按Enter键,向下复制公式。
简单说下公式的含义和解题的思路:
咱们知道手机号码是由11位数字构成的。
MID(B2,ROW($1:$99),11)部分,MID函数依次从B2的第一、二、三、4……直至99个位置,提取长度为11位的字符,而后分别乘以0和1,即常量数组{0,1}。
以C2单元格中祝洪忠童鞋的信息为例:
若是MID函数的结果为文本,好比“爱吃鱼刺不爱吃鱼真傻”,那么乘以{0,1}后,结果为错误值{ #VALUE!, #VALUE!};
若是MID函数的结果为数值,好比18359282475,结果为{0,18359282475}。
由此创建了一个2列99行的内存数组,做为VLOOKUP函数的查询区域。
VLOOKUP用0做为查找值,采用精确匹配的方式,在以上内存数组的第一列查询首个0出现的位置,而且返回相对应的内存数组第二列的结果,因而便获得了手机号码。
结果以下:
公式多奇妙,试过才知道。有的小伙伴可能对计算过程仍是懵懵懂懂,这也不要紧,能够先收藏一下,万一哪天遇到了这样奇葩的数据,就要拿出变态的方法来对付了。
好了,今天的内容就是这样吧,祝各位一周好心情!