今天的练习是:如下图1所示的数据,每个单元格中包含由换行符分隔的3个数字,现在需要提取其中10位长的数字,如图1中的B列所示。
图1
先不看下面的答案,自已试试。
解决方案
公式1
可以试试下面的公式:
=LOOKUP(9E+307,--MID(A2,ROW(INDIRECT("1:"& LEN(A2)-9)),10))
该公式使用MID函数从单元格中的第1个数字开始依次取10位数,共14个数字,这14个数字中,由于有空格的存在,所以除单元格中的10位数外,其余都是9位数。然后使用LOOKUP函数在这些数字中进行查找,返回最大的一个数字,即单元格中的10位数。
公式2
试试下面的公式:
=MID(A2,SEARCH(CHAR(10)&REPT("?",10)&CHAR(10),CHAR(10)&A2&CHAR(10)),10)
在单元格中搜索前后都是空格且中间是10位数的数字。
公式3
试试下面的公式:
=IF(LEN(LEFT(A2,SEARCH(CHAR(10),A2,1)-1))=10,LEFT(A2,SEARCH(CHAR(10),A2,1)-1),IF(LEN(MID(A2,SEARCH(CHAR(10),A2,1)-1+2,FIND(CHAR(10),A2,FIND(CHAR(10),A2)+1)-(SEARCH(CHAR(10),A2,1)-1+2)))=10,MID(A2,SEARCH(CHAR(10),A2,1)-1+2,FIND(CHAR(10),A2,FIND(CHAR(10),A2)+1)-(SEARCH(CHAR(10),A2,1)-1+2)),IF(LEN(RIGHT(A2,LEN(A2)-FIND(CHAR(10),A2,FIND(CHAR(10),A2)+1)))=10,RIGHT(A2,LEN(A2)-FIND(CHAR(10),A2,FIND(CHAR(10),A2)+1)))))
这个公式很长,其实就是从头开始依次查找由空格分隔开的数字,如果其长度是10,则找到该数字。
提示:可以使用“公式求值”功能,详细查看上述公式是怎么运行的。