一、案例
如下图所示,A1:B8为商品采购表,要求提取B列采购数量中的数字。
二、解决方法
在C2单元格输入公式 =-LOOKUP(0,-LEFT(B2,ROW($1:$9)))
拖动填充柄向下复制公式。
公式解析:
(1)ROW($1:$9)返回数组{1;2;3;4;5;6;7;8;9}
(2)LEFT(B2,ROW($1:$9))指分别从B2单元格提取前1个、2个、3个……9个字符。LEFT函数返回的结果为{"1";"10";"10桶";"10桶";"10桶";"10桶";"10桶";"10桶";"10桶"}。由于B2单元格只有3个字符,因此从B2单元格提取的前3个至前9个字符均为“10桶”。
(3)-LEFT(B2,ROW($1:$9))在LEFT函数前添加负号,可以将LEFT提取的数值型文本转为数值,非数值型的文本转为错误值。其返回的结果为
{-1;-10;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
(4)LOOKUP(0,-LEFT(B2,ROW($1:$9))),即在
{-1;-10;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}中查找“0”。
当LOOKUP查找不到“0”时,会返回小于“0”的最后一个数值“-10”。
(5)-LOOKUP(0,-LEFT(B2,ROW($1:$9)))在LOOKUP函数前添加负号,将返回的负值转为正值。