Excel LOOKUP的前两个参数

我有多行数据:第3行是date标题,每列增加1个月。 第4行有多个值在0>0之间的列。 下面的公式由其他人编写,find数据>0的最后一列,并返回相应的月份:

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

我不明白2值是什么动作,而且我还不明白1/(($D4:$AH4)>0是做什么的?

让我用一个简短的例子:

 =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(查找中的第一个参数)大于数组中的所有数字,所以当您search数组时,它将查找最后一个位置在数组中有一个1.在我的例子中,这将是第四个(最后)的位置,然后将被用来返回最后一个数组,“虎”中的第四个位置:

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

而不是2,你可以使用3或4等。 你会得到相同的结果; 不过,这里最好使用2。

为了清楚发生什么,你总是可以使用在“公式”选项卡上find的蒸发公式; 但是,我更喜欢突出显示代码的各个部分,然后按F9键查看它是如何计算的

正如在这篇文章中提到的mrexcel,$ D4:$ AH4> 0在真或假的时候会先产生一个1s和0s。 把它放在1以下会产生大量的1和div / 0的错误。 寻找两个将产生“1”(最后一行与数据)的最后一个实例,因为2比其他所有更大。