所有的“仓库”都是合并单元格,输入“仓库”和商品,能查找到相应的出货量,结果如下:
所有的“仓库”都是合并单元格,输入“仓库”和商品,能查找到相应的出货量,结果如下:
马上有朋友提出:“我们经常是按照商品进行查询,输入相应的商品,查询该产品位于哪个仓库,以及出货量,这样的查询能实现吗?”,即结果如下:
肯定能实现!
公式实现
在E2单元格输入公式:
=INDEX(A2:A10,LOOKUP(MATCH(F2,B2:B10,),ROW(1:9)/(A2:A10<>””)))
在G2单元格输入公式:
=IFERROR(VLOOKUP(F2,B2:C10,2,0),””)
即可实现查询效果。
公式解析
第一个公式:
=INDEX(A2:A10,LOOKUP(MATCH(F2,B2:B10,),ROW(1:9)/(A2:A10<>””)))
(A2:A10<>””):
A2:A10是不是空值,如果是,返回TRUE,如果不是,返回FALSE,所以,此部分的结果是:
{TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE}
ROW(1:9)/(A2:A10<>””):
1到9分别去除以上数组的每一值,结果为:
{1;#DIV/0!;#DIV/0!;4;#DIV/0!;#DIV/0!;7;#DIV/0!;#DIV/0!}
MATCH(F2,B2:B10,):
返回F2商品在B2:B10区域中的行数。
假设F2商品为产品5,本部分返回5。
LOOKUP(MATCH(F2,B2:B10,),ROW(1:9)/(A2:A10<>””)):
在数组{1;#DIV/0!;#DIV/0!;4;#DIV/0!;#DIV/0!;7;#DIV/0!;#DIV/0!}中查找F2商品对应的数值。
假设F2商品是产品4,产品4的行数是4,那本部分查找结果是4;
假设F2商品是产品5,产品5的行数是5,那本部分查找结果是4,因为LOOKUP查找时忽略错误值#DIV/0!,数组中的第五个是错误值,则返回比5小的最接近5的值,即是4;
INDEX(A2:A10,LOOKUP(MATCH(F2,B2:B10,),ROW(1:9)/(A2:A10<>””))):
返回A2:A10中F2商品对应的值,即对应的仓库。
第二个公式:
=IFERROR(VLOOKUP(F2,B2:C10,2,0),””)
在B2:C10区域,查找F2商品对应出货量。IFERROR避免错误值,如果查不到,就返回空值。