- A+
方法一:
公式
=VLOOKUP(0,MID(A2,ROW(1:20),11)*{0,1},2,0)
公式解释:首先,用mid函数+Row函数从第1个字符开始,截20次并得到20个结果(如果字符串比较长,可以用一个足够大的数字替代20,比如99),其中总有一个是11位的纯数字。为了方便用Vlookup,用*{0,1}把截取的结果变成2列。
方法二:
公式:
=-LOOKUP(1,-MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17)),ROW($1:$15)))
公式解释:公式里面的1/17其实是等于0.0588235294117647。将其与查找单元格连接并且在前面嵌套FIND(ROW($1:$10)-1就可以查找单元格中数字每次出现的位置。在在前面嵌套一个min函数就可以确定第一个数字出现的位置是哪里。然后用mid函数截取字符。截取的字符里面当然包含了完整的数字,所以在最外面加上lookup函数并且第一参数用一个很小的值1,就可以确定出数字然后显示出来。
方法三:
公式:
=MIDB(A2,SEARCHB("?",A2),2*LEN(A2)-LENB(A2))
公式解释:该公式运用了字节与字符的关系,数字与汉字的字符是一样的,但是汉字与数字的字节是不一样的,一个汉字是两个字节,一个数字是一个字节;【SEARCHB("?",A2)】算出第一个字节的位置是5;【2*LEN(A2)-LENB(A2)】算出数字的长度,【MIDB(A2,SEARCHB("?",A2),2*LEN(A2)-LENB(A2))】的原理就跟mid函数一样截取公式了,只不过mid是按字符截取,midB是按字节截取。
公式四:
公式:
=-LOOKUP(1,-MID(A2,MIN(FIND(ROW($1:$10)-1,A2&1/17)),ROW($1:$15)))
公式五
但该公式只能正确提取15个数值
最后来个VBA自定义函数
将上面代码粘贴到VBA编辑器
然后你的excel就有了Getnum公式了
打完收工,下期再“贱”。
资料来源微信公众号-Excel教程练习