下面的Excel表格,A、B列记录了车辆的维修费用。现在需要将D列车辆全称对应的维修费用,用公式记录在E列。在E2单元格写公式下拉完成。
我们在E2单元格输入公式:
=LOOKUP(1,0/COUNTIF(D2,"*"&$A$2:$A$11&"*"),$B$2:$B$11)
公式分析:
$B$2:$B$11:
得到B列的所有维修费用金额的数组:
{350;2005;3727;3631;4156;151;1064;3992;1555;4309}
COUNTIF(D2,"*"&$A$2:$A$11&"*"):
查找D2单元格,在A列的个数。第二参数前后加了*,是通配符用法,表示加上任意字符。
0/COUNTIF(D2,"*"&$A$2:$A$11&"*"):
任意数字除0就会变成错误值#Div/0。
根据lookup函数忽略错误值、用足够大的数查找最后一个数字的原理,就可以准时查找到符合符件的值。
=LOOKUP(1,{#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!},{350;2005;3727;3631;4156;151;1064;3992;1555;4309})
公式中为什么用1和0,其他数字可以吗?当然可以,只要第一个数字大于第二个数字。用1和0只是看着简便而已,比如修改为:
=LOOKUP(99,98/COUNTIF(D2,"*"&$A$2:$A$11&"*"),$B$2:$B$11)
Excel等软件课程推荐