如何用公式提取字符串中的数字?!经典公式,收藏备用
👍
近期推送的文章
· 正 · 文 · 来 · 啦 ·
这样的需求,Excel界的前辈们N年前已经将公式写好,我们只需收藏备用,要用的时候,拿来套用就是了。
强烈暗示:请收藏本文
提取数字的公式:
=-LOOKUP(0,-MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17)),ROW($1:$99)))
A2单元格字符串如下图
公式思路:
在字符串中从第一个字符开始,找阿拉伯数字
找到后,就从第1个阿拉伯数字开始分别取1、2、3……99个字符,
将取出的字符,分别给他们添加负号(做数学运算)。如果不是纯数字(含有字母和符号),添加负号会出错。
然后在由错误码和负数组成的列表中,用LOOKU查找0值,根据LOOKUP的规则会返回最后一个负数(也就是字符串中第一组数字的完整部分)
公式解释:
ROW($1:$10)-1
生成数字0-9
A2&1/17
由于是分别查找0-9,而字符串中只会包含0-9的部分数字,如果没有某数字,用FIND查找,会出错,为了避免出错,可以给原字符串添加一串0123456789,为了简化,用1/17替代。
1/17结果为0.0588235294117647,包含了0-9全部阿拉伯数字。
MIN(FIND(ROW($1:$10)-1,A2&1/17))
分别查找字符串中阿拉伯数字0-9,并返回其第一个数字的位置
-MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17)),ROW($1:$99))
从第一个数字开始,分别截取1、2、3……99个字符,并将其变为负数。其结果为:数字和错误值组成的列表,比如对A2单元格进行运算,其结果如下:
-LOOKUP(0,-MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17)),ROW($1:$99)))
在上面的列表中查找0。根据LOOKUP的二分法规则,会返回最后一个数字-5678。然后再将其添加负号,变为5678,也就是A2单元格中第一组数字。
参加龙逸凡的Excel视频课程,助你成为Excel达人