所有的“倉庫”都是合并單元格,輸入“倉庫”和商品,能查找到相應的出貨量,結果如下:
馬上有朋友提出:“我們經常是按照商品進行查詢,輸入相應的商品,查詢該產品位于哪個倉庫,以及出貨量,這樣的查詢能實現嗎?”,即結果如下:
肯定能實現!
公式實現
在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避免錯誤值,如果查不到,就返回空值。