excel提取不规则数据(excel函数提取不规则字段)

今天,有伙伴问了小编这样一个问题,现有如下图所示的源数据,现需要将姓名和电话号码分别从源数据所在列提取出来:

excel提取不规则数据(excel函数提取不规则字段)

看到这样的数据,单纯的提取函数肯定是没有办法了,之前分享的提取长度不一的提取函数+FIND的套路也无法使用了,那这样的问题该怎么解决呢?且看小编慢慢道来:

我们只需要在C2单元格内输入公式:=MID(A2,MIN(FIND(ROW($1:$10)-1,A2&"0123456789")),11)

公式输入完成之后,按Ctrl+Shift+回车结束进行尝试,此公式则变为数组公式

excel提取不规则数据(excel函数提取不规则字段)

 

函数解释:

1. ROW($2:$14)会得到{1;2;3;4;5;6;7;8;9;10},10个数字,而减去1,就会得到{0;1;2;3;4;5;6;7;8;9},刚好是阿拉伯数字的0-9。A2&”0123456789”就是”林明玉156958498650123456789”

2. FIND(ROW($1:$10)-1,A2&"0123456789")的意思就是在”林明玉156958498650123456789”中,分别找0-9这十个数字在其中的位置。

3. 因为位置序号最小的数字(即0-9中0所在的位置序号),即为号码字段开始的第一个字符。所以我们用MIN函数判断出数字在字符串中最小的位置,即为数字开始的位置,作为MID函数的第二参数。最后再用MID函数提取出11位数字即为需要的电话号码

4. 看到这,有的小伙伴或许会发出属于自己的声音了,为什么要让A2连上数字”0123456789”?。小编告诉你,那是因为不可能所有电话号码都会包含完整的0-9这10位数字,当没有在A2单元格内找到对应数字时,FIND函数就是返回错误值,整个公式就会失去作用。所以为了避免这种情况,我们需要在A2后面脸上数字”0123456789”

当你可以理解上述原理之外,就可以在原公式的基础上对公式进行简化:

=MID(A2,MIN(FIND(ROW($1:$10)-1,A2&5/19)),11)

excel提取不规则数据(excel函数提取不规则字段)

从上图可以看出,这次 A2 后面连接的就不在是数字 ”0123456789” 了,而是看上去更简单的 5/19 。其实原理和上面一样, 5/19=0.2631578947 ,这个结果刚好包含了数字 0-9 ,和上面的直接连接 0-9 是一样的效果

通过上一步骤,我们就可以提取出完整的电话号码,接下来,就只需要用SUBSTITUTE函数在数据区域中,将提取出来的电话号码替换为空,就可以了

excel提取不规则数据(excel函数提取不规则字段)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论