要求:提取单元格内,第一个数字的位置。
平常的excel使用中,会经常遇到这样的字符提取。我们知道,数字只有10个,0-9。于是,可以有一个大胆的想法。
上图用find函数分别在A2单元格的字符串内查找0-9,得出各自的位置,字符串中没有的数字,自然就返回错误了。从中可以知道,find返回的数字当中,最小的数字就是字符串内第一个数字的位置,如2对应的4。
因此,下一步我们想到的方法就是使用min函数来提取最小的数字。
但min函数只对提取数字有用,有错误值就不好处理了。
变通方法很简单,我们将字符串接驳,使得每个字符串都含有0-9这10个数字。在字符串后面链接上“0123456789”,再使用min就能得出第一个数字所在的位置了。
接着下来就是将min和find函数一起使用了。这里要使用到数组公式。
什么是数组公式?不理解不要紧。现在只要知道min find是下面的步骤:
1、find函数在字符串中查找0,返回其在字符串中的位置
2、find函数在字符串中查找1,返回其在字符串中的位置
......
依次这样操作10次,生成一组数字
{10,11,4,5,6,15,16,17,18,19}
3、使用min函数在上面的数字当中提取最小值。
将这些动作打包在一起操作,组合成数组公式(当然不使用数组操作也能得到值):
=MIN(FIND({0,1,2,3,4,5,6,7,8,9},A2&'0123456789',1))
将公式做小许修改:{0,1,2,3,4,5,6,7,8,9}用row(1:10)-1代替,row(1:10)生成1-10十个数字,再各自减去1就是0-9十个数字1/17代替'0123456789',因为1除以17等于0.0588235294117647,这里面0-9的数字全部都有。
=MIN(FIND(ROW($1:$10)-1,A2&1/17)),数组三键
当然,除了上面的公式,也可以使用下面数组公式match:
=MATCH(1,1/1^MID(A2,ROW($1:$99),1),),同样能够得到结果。方法套路都基本相通。
联系客服