|
=LOOKUP(9E+307,--MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1234567890)),ROW(INDIRECT("1:"&LEN(A1)))))
,该公式适用于提取文本中左起第一次出现开始的连续数字。
这里将我理解的和不理解的一并列出,共同学分享,求高手解释
1.9E+307,是excel能表示的接近最大数,可以看做无穷大吧,在文本中查找会落到一串数字的后面,因为不存在这个几乎无穷大的数。
2.--MID(),这个看不懂,为啥一定要加这个“--”?
3.后边的A1&1234567890是为了防止字符串不含数字而导致出错
4.ROW(INDIRECT("1:"&LEN(A1)))是用来表示一个数字的连续长度吗?怎么理解呢?没有看明白
本帖最后由 lisachen 于 2011-9-3 22:33 编辑
以A1为A1233举例:
如果A1为A1233,INDIRECT("1:"&LEN(A1))返回INDIRECT("1:5")
ROW(INDIRECT("1:"&LEN(A1)))返回1到A1单元格数据的长度,比A1为A1233则返回{1;2;3;4;5}
MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1234567890)返回出现在A1单元格中的第一个数字的位置
MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&1234567890)),ROW(INDIRECT("1:"&LEN(A1)))),则是从单元格A1中取从第一个出现数字的位置开始的1至单元格长度的字符串,如a1233,择取1,12,123,1233,1233,从小到大排列
‘--mid目的是把上一部取得的字符串转为数字
9E+307是数字中的极大值
最后通过lookup,找到以上步骤计算出的最后一个值,也就是1233
|
|