分享

【Excel函数篇】你会提取单元格中的手机号吗?

 L罗乐 2017-10-21

本文由两部分构成,其一提出问题并解决问题;其二解释相关函数公式。

1,

有这样一个问题,如下图所示,A列是数据列,混合文本中夹杂着手机号码;现在,需要在B列把A列数据中的手机号码提取出来。

您打算怎么操作呢?

当然是……快速填充了。

然而,快速填充这个玩意儿,时灵时不灵的。

小数据时用两下还可以,毕竟结果若是错了一眼就可以看出来。而大数据时,还是别用了,简直等同于自杀,而且怎么死的都不知道。

比如这个问题,快速填充的结果如下:

这问题如果使用函数公式解决,常用的套路有以下4个:

1、=MAX(IFERROR(--MID(A2,ROW($1:$50),11),0))

2、=MIN(IFERROR(--MID(A2&'a',ROW($1:$50),11),'T'))

3、=VLOOKUP(,MID(A2,ROW($1:$50),11)*{0,1},2,)

4、=-LOOKUP(,-MID(A2&'a',ROW($1:$50),11))

 

本例中,四个公式的计算结果相同,但由于它们的计算原理并不一样,在不同的例子上彼此之间还是有所区别的。

MAX函数是提取参数中的最大值,MIN函数是提取参数中的最小值。因此,当单元格存在多个手机号时,两者所提取的结果将不同。

VLOOKUP函数的查询机制是从前向后查,且查到即止,只提取首个查询结果。

LOOKUP(比查询范围内所有值都大的同类型的值,查询范围),该套路是提取最后一个符合条件的结果。

你瞧,两个函数的查询机制刚好是反过来的;没有优劣之分,只是各有所长。如果我们需要提取首个手机号,可以使用VLOOKUP;如果是提取最后一个手机号,可以使用LOOKUP。



2,

四个公式都用到了MID(A2,ROW($1:$50),11)语句。该语句的意思是,从A2单元格的第1~50位的位置分别提取11个字符。只所以提取11个字符是因为手机号为11位。

 =MAX(IFERROR(--MID(A2,ROW($1:$50),11),0))

--MID()是将MID函数的计算结果转换为数值,当MID函数的计算结果为纯文本时,减负运算将返回错误值,因此使用IFERROR函数将错误值转换成0,最后使用MAX函数提取最大值。

 =MIN(IFERROR(--MID(A2&'a',ROW($1:$50),11),'T'))

和MAX函数套路不同的是,MID的第一参数为A2&'a',这是防止数值存在单元格尾部时,造成公式计算错误。IFERROR将错误值屏蔽为文本”T”,是因为MIN函数计算时会忽略文本值,此处的”T”可以替换为其它文本字符,例如“星光”,”” “亲爱的”等等。

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

VLOOKUP的第一参数是0,公式做了省略处理。

MID(A2,ROW($1:$50),11)*{0,1},通过MID函数的计算结果和常量数组{0,1}之间运算,产生了两列50行的二维数组,从中查询首个数值。

 =-LOOKUP(,-MID(A2&'a',ROW($1:$50),11))

LOOKUP的查找值为0,公式做了省略处理。

-MID(A2&'a',ROW($1:$50),11),该部分的计算结果有两种,一种为错误值,一种是小于等于零的数值。LOOKUP找到最后的数值后,再进行一次减法运算,将计算结果转换为正数。

数据分析就用Excel

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多