Excel LOOKUP的前两个参数

时间:2015-08-03 17:15:28

标签: excel excel-formula

我有多行数据:第3行是日期标题,每列增加1个月。第4行有多列,其值介于0>0。下面的公式由其他人编写,找到包含数据>0的最后一列,并返回相应的月份:

=LOOKUP(2,1/(($D4:$AH4)>0),$D$3:$AH$3)

我不明白2值执行了哪些操作,我还不明白1/(($D4:$AH4)>0的作用是什么?

2 个答案:

答案 0 :(得分:1)

让我使用一个缩短的例子:

=LOOKUP(2,1/(($D4:$G4)>0),$D$3:$G$3)

(($ D4:$ G4)> 0)将返回true和falses数组。例如:

={TRUE,TRUE,FALSE,TRUE)

除以1 / {TRUE; TRUE; FALSE; TRUE)时,您将获得:

={1,1,#DIV/0!,1}

除了错误之外,唯一要返回的数字是1.因为2(查找中的第一个参数)大于数组中的所有数字,当你搜索数组时它是'用1来找到数组中的最后一个位置。在我的例子中,这将是第4个(最后)位置,然后用于返回最后一个数组中的第4个位置," Tiger":

=LOOKUP(2,{1,1,#DIV/0!,1},{"Cat","Dog","Bird","Tiger"})

而不是2,你很可能使用3或4等。你会得到相同的结果;但是,在这里使用2是最佳做法。

为了更好地了解发生了什么,你可以随时使用"公式"标签;但是,我更喜欢只突出显示代码的各个部分,然后按F9键查看其计算方式

答案 1 :(得分:1)

正如this发布到mrexcel中所提到的,$ D4:$ AH4> 0在真或假时将首先产生1吨和0。将其置于1以下将产生大量的1和div / 0错误。寻找两个将生成“1”的最后一个实例(带数据的最后一行),因为2比其他所有更大。