【释疑】简要地说,从逻辑推理来看:
1
、
首先,
条件是一组逻辑判断的值或逻辑运算得到的由
TRUE
和
FALSE
组成或者
0
与非
0
组成的数组,因而:
1/(
条件
)
的作用是用于构建一个由
1
或者
#DIV!0
错误组成的值。
2
、根据
LOOKUP
函数说明中的这一条:
如果
LOOKUP
函数找不到
lookup_value
(即:
2
)
,则它与
lookup_vector
中小于或等于
lookup_value
的最大值(即:
1
)匹配。
也就是说,要在一个由
1
和
#DIV!0
组成的数组中查找
2
,肯定找不到
2
,因而将返回小于或
等于
2
的最大值(也就是
1
)匹配。
为什么要用
2
来查找
1
或用
1
来查找
0
呢?因为如果有多个与第
1
参数相等的值,
则
Lookup
就不一定返回
“
最后一个
”
所对应的记录,所以必须养成一个良好习惯,
而不要用:
LOOKUP(1,1/(
条件
),……
,或
LOOKUP(,0/(
条件
),……
3
、如果有多个满足条件的纪录,为何只返回最后一个,而不是第一个或其他呢?这个解释
就需要二分法流程图的模拟了。而对于一般使用者来说,只需要记住
“
查找满足条件的最后
一个记录
”
可以使用通用公式
LOOKUP(2,1/(
条件
),
查找数组或区域
)
或
LOOKUP(1,0/(
条件
),
查找数组或区域
)