欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Office

Excel乱序混合数字文本中提取手机号 把B列手机号码提取到C列

程序员文章站 2022-03-31 23:17:01
小蜜蜜询问如何把B列录制的手机号码提取出来放在C列? 当这张Excel表格呈现在我面前,不想骂人都不行。我反问她,为何不把手机号码单独录入到一列,而是杂七杂八...

小蜜蜜询问如何把B列录制的手机号码提取出来放在C列?

Excel乱序混合数字文本中提取手机号  把B列手机号码提取到C列

当这张Excel表格呈现在我面前,不想骂人都不行。我反问她,为何不把手机号码单独录入到一列,而是杂七杂八的东东往B列塞。

如果数据源是我们自己可以掌控,自己录入的,请千万记得Excel不是记事本,一个单元格记录一个属性,方便我们后期数据分析处理,否则就是自己找茬。

叨叨完,该帮助的还得帮助。仔细想想B列的数据规律,手机号码都是11位连续数字构成,我们可以用MID函数+VLOOKUP提取数字。 

先在C2单元格输入公式:=VLOOKUP(0,MID(B2,ROW($1:$30),11)*{0,1},2,0),然后按下CTRL+SHIFT+ENTER结束数组公式输入,即可提取到手机号码。 

vlookup提取手机号公式剖析: 

MID(B2,ROW($1:$30),11)部分,MID函数依次从B2单元格的第1、2、3、4……直至30个位置,提取长度为11位的数据,然后分别乘以0和1,即常量数组{0,1}。 

选择MID(B2,ROW($1:$30),11)*{0,1},按下F9,抹黑公式可以看到运算结果如下: 

Excel乱序混合数字文本中提取手机号  把B列手机号码提取到C列

如果MID函数的结果为文本,那么乘以{0,1}后,结果为错误值{ #VALUE!, #VALUE!};如果MID函数的结果为数值,比如13388124598,结果为{0, 13388124598}。 

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

VLOOKUP第四参数为0,采用精确匹配的方式,在以上内存数组的第一列查询首个0出现的位置,并且返回相对应的内存数组第二列的结果,于是就得到了手机号码