图片如下图,商品名称和价格分布在多行和多列中,要查找引用某商品的价格,如果来实现呢?下面分享具体实现方法。
图例目的:实现在多行多列中查找引用数据
方法一:用SUMIFS函数实现
在目标单元格输入公式:=SUMIFS(B2:F8,A2:E8,J1)
操作演示公式解释:
通过SUMIFS函数返回价格区域中的条件区域内符合条件的价格。
方法二:用SUMIF函数实现
在目标单元格输入公式:=SUMIF(A2:E8,J1,B2:F8)
操作演示公式解释:
通过SUMIF函数返回条件区域内符合条件的价格区域中的价格。
方法三:用VLOOKUP函数嵌套多函数数实现
在目标单元格输入公式:=VLOOKUP($J$1,INDIRECT(CHAR(MIN(IF(ISNUMBER(FIND(J1,$A$1:$F$8)),COLUMN($A:$F),999))+64)&":F"),2,0),输入完公式同时按Ctrl+Shift+Ener三键确认数组公式。
操作演示公式解释:
1.CHAR(MIN(IF(ISNUMBER(FIND(J1,$A$1:$F$8)),COLUMN($A:$F),999))+64)&":F",这个是根FIND函数返回查找值在源数据表中的列区域,之后通过INDIRECT函数把它转换为可以让VLOOKUP函数识别的第二参数,即数据表。
操作演示2.MIN(IF(ISNUMBER(FIND(J1,$A$1:$F$8)),COLUMN($A:$F),999))+64),是返回查找值所在的列号。
3.CHAR(MIN(IF(ISNUMBER(FIND(J1,$A$1:$F$8)),COLUMN($A:$F),999))+64),这个是把查找值所在的列号转换为对应的字母。
知识小点:
这种查找引用是在查找值没有重复的情况下可以使用,如果有重复值,那么SUMIFS函数和SUMIF函数就会把价格进行求和,得到的结果就不是所想要的正确结果;VLOOKUP函数也只能匹配到第一个值,而VLOOKUP函数主要是在第个二参数里,通过FIND函数定位数据表中的第一列,利用INDIRECT函数把区域转换成可以为VLOOKUP函数提供查找区域数据表的目的。