今天的练习是:如下图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,则找到该数字。 提示:可以使用“公式求值”功能,详细查看上述公式是怎么运行的。 |
|
来自: hercules028 > 《excel》