所有的“仓库”都是合并的单元。输入“仓库”和货物,就可以找到对应的出货。结果如下:
有朋友马上提出:“我们经常根据商品进行查询,输入对应的商品,查询产品位于哪个仓库,出货数量。这样的查询能实现吗?”,即结果如下:
绝对可以实现!
公式实现
在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,所以这部分的结果是:
{真;假;假;真;假;假;真;假;FALSE}
ROW(1:9)/(a 2: 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)/(A 2: 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)/(a 2: a10 " "))):
返回A2:A10中F2商品对应的值,即对应的仓库。
第二个公式:
=IFERROR(VLOOKUP(F2,B2:C10,2,0),"")
在B2:C10区域,找到F2货对应的出货数量。IFERROR避免错误值,如果找不到,则返回空值。