ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 9369|回复: 32

[讨论] 有空吗?来!练手啦——提取混合文本中的电话号码

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-12 14:53 | 显示全部楼层 |阅读模式
本帖最后由 看见星光 于 2014-9-14 13:56 编辑

温馨提示:各位函数控们,技术竞赛版块,题神007又出新题啦,大家没事就去走一遭。链接:
技术竞赛[第109期]综合评分问题(二)(热赛中……)

技术竞赛版块强烈提示!!:
1,如未答题,请不要回贴,否则视为灌水。
2,一人只占一层楼,多占楼也是不恰当的,会被扣财富哦,严重者,会取消参赛资格,所以如无法编辑帖子,最好消息联系7版。


=========================

本题规则内容见图见附件: 练手3.rar (99.35 KB, 下载次数: 188)
老规矩:
1,纯函数。Word法,两端对齐法,自定义函数等,这些都不算数哈。我都偷偷用过了。http://club.excelhome.net/thread-1151564-1-1.html
2,看思路,不看公式长短。
3,玩的好,有花。。没花送了,有钱!!
4,玩有所得,记得送我花哦,哈哈。
5,说正事啦:
简单的说,就是提取单元格内的电话号码(不是提取全部数值)
没有号码那就返回空白。
结果如C列。
补充:想法一直都是出简单的题,看不同的思路,所以别多想哈,一个格子只会有一截数字,号码只有7和11位,数据只看例子就好,答案只要和结果一致就好哈。



1222.jpg




评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-9-12 15:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 jacky1998 于 2014-9-12 18:21 编辑
  1. =TEXT(MAX(--TEXT(LEFT(TEXT(MID(B3&"a",COLUMN(1:1),ROW($5:$15)),),ROW($4:$14)),"[<>];;;!0")),"[>];  ")
  2. 大神们用过的文本中取数字的公式,借用一下。=TEXT(MIN(-TEXT(MID(B3&"a",COLUMN(A:BC),ROW($5:$15)),"0;;;!0")),"[<];  ")
复制代码

点评

亲,您去做那道竞赛题,那是您肯定会的题~  发表于 2014-9-12 15:08

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-9-12 15:26 | 显示全部楼层
本帖最后由 zxh361 于 2014-9-13 10:22 编辑

取巧了,电话号码为7位和11位,如果有8位也可以加进来,前提是一个字符串只有一个电话号码.
=TEXT(MAX(--TEXT(MID(B3,ROW($1:$100),{7,11}),"0;;;\0")),"0;;;")数组

再换个思路:超长公式:

=MID(B3&"1",MATCH(1=1,ISNUMBER(--MID(B3&"1",ROW(INDIRECT("1:"&LEN(B3&"1"))),1)),),LOOKUP(COUNT(--MID(B3&"1",ROW(INDIRECT("1:"&LEN(B3&"1")-1)),1)),{0,5,7,11}))第二个公式可以搞定,呵呵LOOKUP可以改成TEXT
=MID(B3&"1",MATCH(1=1,ISNUMBER(--MID(B3&"1",ROW(INDIRECT("1:"&LEN(B3&"1"))),1)),),TEXT(COUNT(--MID(B3&"1",ROW(INDIRECT("1:"&LEN(B3&"1")-1)),1)),"[>=11]11;[>=7]7;\0"))

手机号13812345678密码2658E16字符串我认为一剑老师的例子比较特殊,数字加E16刚好是科学计数法,所以出错,如果改成其它字符应该不会出错。
针对特殊情况,公式得修改了:
=TEXT(MAX(--IF(LEN(TEXT(MID(B3,ROW($1:$100),{7,11}),"0;;;\0"))={7,11},TEXT(MID(B3,ROW($1:$100),{7,11}),"0;;;\0"),0)),"0;;;")
经过13732120571 老师的提醒,上面的公式可优化一下:=TEXT(MAX(--TEXT(TEXT(MID(B3,ROW($1:$100),{7,11}),"0;;;\0"),"[>"&10^11&"]\0;0")),"0;;;")



评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-9-12 15:39 | 显示全部楼层
哇哦,我是来偷学的,楼上的全是牛人啊!

TA的精华主题

TA的得分主题

发表于 2014-9-12 15:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
上述三个公式在这个手机号13812345678密码2658E16字符串全败下阵来

点评

前辈,我增加了一个补充说明,这样应该清晰多了。  发表于 2014-9-12 15:57
楼主的数据源不够全面,我也在考虑是否需要通用公式。  发表于 2014-9-12 15:50

TA的精华主题

TA的得分主题

发表于 2014-9-12 15:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-9-12 16:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-9-12 16:06 | 显示全部楼层
最好是用正则表达式技术,制作出自定义函数。

TA的精华主题

TA的得分主题

发表于 2014-9-12 16:59 | 显示全部楼层
弱弱的问一下
TEXT(B3,"0;;;\0"),后面这一串"0;;;\0"是什么意思呀

TA的精华主题

TA的得分主题

发表于 2014-9-12 17:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=IF(COUNT(MID(B3,ROW($1:$30),1)*1)>6,MID(B3,MATCH(,MID(B3,ROW($1:$30),1)*0,),COUNT(MID(B3,ROW($1:$30),1)*1)),"")
不会高深的............

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-7 19:37 , Processed in 0.054645 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表