考虑用vba做吧,公式倒是想出来一个,但是太长了还是数组公式
图中B1里公式如下:
=IF(AND(COLUMN(A1)>1,VLOOKUP(0,LARGE(IFERROR(IF(LEN(SUBSTITUTE(MID($A1,ROW($A$1:$A$99),11)," ",""))=11,--MID($A1,ROW($A$1:$A$99),11),0),0),COLUMN(A1))*{0,1},2,0)=0),"",VLOOKUP(0,LARGE(IFERROR(IF(LEN(SUBSTITUTE(MID($A1,ROW($A$1:$A$99),11)," ",""))=11,--MID($A1,ROW($A$1:$A$99),11),0),0),COLUMN(A1))*{0,1},2,0))
右拉并下拉即可
注:以上公式为数组公式,需要同时按下 Ctrl+Shift+回车 三键结束输入
大体思路如下:由于手机号是11位所以先用mid函数从A1单元格中文本的第1到N位提取11个字符,然后通过substitute函数将提取出的文本中的空格删除,然后再通过len判定删除空格后的文本是否为11位,然后再通过if函数将len判定为11位的文本返回本身,非11位的文本返回0,返回后就会得到 010-1234567,0,0,0,13512341234,....等一堆数字,由于在if中mid函数前方加了“--”这个符号表示将mid提取的文本转换为数值,所以当转换时010-1234567这样的文本就会报错,最终if返回的值为:错误,0,0,0,13512341234...这样的一堆数字,由于有错误值存在所以用iferror函数将错误值转换为0,最后返回给large函数的值为:0,0,0,0,13512341234,....然后通过large将其中第1个最大的数值返回,即13512341234然后再乘以{0,1}就会得到0,13512341234,,然后通过Vlookup函数将13512341234提取出来,由于A1中可能会含有多个手机号,当公式右拉时,C,D,....等列可能会出现0,所以在vlookup外边再用个if来限定下,当B列的后方,即C,D,...等列出现0时,显示为空