hello,大家好,今天我们来看这样一个问题,如何提取最后一个数字前面的内容,什么意思呢,直接看图: 可以看到货号长度不定,后面的非数字的位数也不定,需要提取最后面一个数字之前的内容。 该怎么解决呢? 可以这样考虑,只要找到最后一个数字的位置,然后用left函数,就可以提取出来,比如第一行,最后一个数字是2,它的位置是7,只需要用LEFT(A2,7)即可完成提取; 那么问题就转换为寻找最后一个数字了。 这里我分享一种思路,使用lookup,找到符合条件的最后一个结果,那么思路有了,该如何实现呢? 我们先用mid函数,把字符串拆分开,然后用0除以拆分结果,如果是数字,就被转换成了0,如果是非数字,就转换成了错误值,然后用lookup(1,0/(条件区域=条件),结果区域)的套路,去找最后一个数字的位置。 最终公式如下: =LEFT(A2,LOOKUP(1,0/MID(A2,ROW($A$1:$A$10),1),ROW($A$1:$A$10))) 公式里使用了ROW($A$1:$A$10),如果字符串超过10位,需要把10修改为更大的一个数字,我们也可以使用indirect函数来动态调整,修改后的公式如下: =LEFT(A2,LOOKUP(1,0/MID(A2,ROW(INDIRECT('A1:A'&LEN(A2))),1),ROW(INDIRECT('A1:A'&LEN(A2))))) 掌握了这个套路,以后再遇到类似的数据提取,就不怕了,比如大家可以思考下,如何提取第一个数字之后的内容?假设最前面的非数字位数不固定。 |
|