2014-10-06 205 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) 
相關問題