lookup函数=LOOKUP(1,0/($A$1:A6=$A7),$B$1:$B6)得到的是=LOOKUP(1,0/(

问题描述:

lookup函数
=LOOKUP(1,0/($A$1:A6=$A7),$B$1:$B6)
得到的是
=LOOKUP(1,0/({FALSE;FALSE;TRUE;FALSE;TRUE;FALSE}),{0;0;12;21;15;21})

为什么会出来结果是15呢?
1个回答 分类:综合 2014-11-24

问题解答:

我来补答
首先你得明白自己在干啥……
你的lookup实质上就是在目标数组0/({FALSE;FALSE;TRUE;FALSE;TRUE;FALSE})这个序列中查找匹配1的值,并返回结果数组{0;0;12;21;15;21}中对应位置的值(lookup此时为vector型)
0/FALSE是nan(div/0),而0/TRUE为0.因此整个lookup函数没有任何匹配
此时lookup的规则是:当目标数组中无法找到匹配值时,返回目标数组中不大于查找值的最大值;所以lookup会将0/TRUE作为匹配值返回
而目标数组中有多个0/TRUE,出现如此的重复值匹配时lookup会返回目标数组排序后重复记录的最后一条,在这里就是最后一个0/TRUE对应的位置,即A5在结果数组中对应的值15
 
 
展开全文阅读
剩余:2000
下一页:铜,及其化合物