2014-10-06 109 views
1

这里是我的Excel工作簿为什么LOOKUP不匹配数组中的第一个元素?

enter image description here

我不明白,为什么在细胞j744截图?

j7式是=LOOKUP(1,(TRIM($D$2:$D$9)=TRIM(H7))/(TRIM($E$2:$E$9)=TRIM(I7)),$F$2:$F$9)

两个阵列划分的结果被以下

{TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}/ {TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE} = {1;#DIV/0!;0;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!} 右?

所以我找了1,基本公式变为

LOOKUP(1,{1;#DIV/0!;0;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!},$F$2:$F$9)

因此其结果应该是10但不44。 。 。 。 。 ?


编辑

当我纠正我的公式来=LOOKUP(1,1/(TRIM($D$2:$D$9)=TRIM(H7))/(TRIM($E$2:$E$9)=TRIM(I7)),$F$2:$F$9)

它工作正常。为什么?感谢大家给予替代方案matchindex。我只是不明白为什么我的第一个公式不起作用。任何为什么当我加1/它MAGICALLY作品? ? ?

+0

你能解释你的业务需求吗?看起来你可以通过简单的排序获得相同的结果。 – 2014-10-06 20:19:19

+2

[重要事项lookup_vector中的值必须按升序排列](http://support2.microsoft.com/kb/324986)。 – pnuts 2014-10-06 20:21:04

+0

我的向量不是升序,这意味着''lookup'应该在遇到'#DIV/0!''后立即停止。 。因此停在第一个值 – Buras 2014-10-06 20:27:57

回答

2

的解释是:

与第一公式,在查找函数第一阵列包含零的1个值之后,在所述阵列的第三和第六值:

enter image description here

Lookup期望数据按升序排序,并将返回小于或等于搜索值的第一项,从数组中的最后一个值开始。在这种情况下,这是数组第六位置的零值。

编辑后的公式会生成一个只包含一个数字“1”的数组。所有其他值是Div错误。所以这个“1”值的位置就是Lookup将使用的值。

enter image description here

进一步说明:

在第一个公式您分割包含TRUE或FALSE两个阵列和所述结果包含1,0和DIV误差值。

{TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}/ 
{TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE} = 
{1;#DIV/0!;0;#DIV/0!;#DIV/0!;0;#DIV/0!;#DIV/0!} 

,包括下式将分TRUE和FALSE值的第一阵列中的1/由1,其返回一个由1个或股利错误的数组。进一步将该数组除以第二个数组将只返回1或Div错误,而不是零。这些步骤是

1/{TRUE;TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE}/{TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE}结果

{1;1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}/{TRUE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE}结果

{1;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!}

没有零!

1

如前所述,LOOKUP预计lookup_vector中的值为升序。为了获得列H & I到列D & E的第一次匹配,我建议在数学上排除不匹配的行。剩下的将是匹配的行。以下示例提供了第一个双重匹配。

对于J2

=INDEX($F$2:$F$9,MIN(INDEX(ROW($1:$8)+(($D$2:$D$9<>H2)+($E$2:$E$9<>I2))*1E+99,,))) 

必要向下填充。这是一个标准公式,可以通过交换SMALL()代替MIN()来轻松修改以提供第二,第三等匹配值。你的结果应该接近以下内容。

enter image description here

3

如果值不按升序排列,并且你正在寻找值范围内的值(而不是值大于范围内的任何东西),查找可产生意外结果。

一种不同的方式,返回所希望的结果是与INDEX和MATCH的组合:

=INDEX($F$2:$F$9,MATCH(1,(TRIM($D$2:$D$9)=TRIM(H7))/(TRIM($E$2:$E$9)=TRIM(I7)),0)) 

输入作为数组式与CTRL移进入

注意,与匹配,寻找完全匹配,范围不需要排序。

另一个公式,将返回正确的结果,并且通常可以被输入(假定在第一表中没有重复的条目):

=SUMPRODUCT((TRIM(H7)=TRIM($D$2:$D$9))*(TRIM(I7)=TRIM($E$2:$E$9))*$F$2:$F$9) 
相关问题