单元格公式
=LOOKUP(1,0/($A$2:$A$30&$B$2:$B$30=F2&G2),$C$2:$C$15)
=LOOKUP(1,0/($A$2:$A$30=F2),$C$2:$C$15)
实现组合查询
这里使用了一个比较巧妙的方法,因为 lookup_vector 中的值必须按升序顺序排列。例如,-2、-1、0、1、2 或 A-Z 或 FALSE、TRUE。否则,LOOKUP 返回的值可能不正确。大写和小写文本是等效的。
如果 LOOKUP 找不到 lookup_value,它会匹配 lookup_vector 中小于或等于 lookup_value 的最大值。
如果 lookup_value 小于 lookup_vector 中的最小值,则 LOOKUP 会返回 #N/A 错误值。
这样使用公式就避免了排序的限制,实现了精确匹配,因为不匹配的lookup_vector为不可比较值,小于等于1的只有0,即精确匹配的那个值,没有匹配的,也就没有小于等于1的值,就会返回#N/A。
可以使用数组公式替代,这个可扩展,适用于匹配值不唯一的情况
=IF(SUM(($A$2:$A$30=F2)*($B$2:$B$30=G2))<ROW(1:1),"",INDEX($C$2:$C30,SMALL(IF(($A$2:$A$30=F2)*($B$2:$B$30=G2),ROW($C$2:$C$30)),ROW(1:1))))
=IF(SUM(($A$2:$A$30=F2)<ROW(1:1),"",INDEX($C$2:$C30,SMALL(IF(($A$2:$A$30=F2),ROW($C$2:$C$30)),ROW(1:1))))