本帖最后由 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;;;")
|