題 在Excel中使用LOOKUP的問題


我目前在excel中遇到了LOOKUP函數的問題

有時它會找到正確的數據,有時卻找不到。

我在下面做了一個圖片示例,頂部的兩個示例給出了錯誤的結果,而底部的兩個示例給出了正確的結果。

我的語法或LOOKUP的使用不正確嗎?我應該如何糾正它以獲得預期的結果?

I cannot figure out what I am doing wrong there

這裡是數據的csv表(我的德語計算機使用';'分隔符也在公式中你可能需要編輯它)

;"LOOKUP(C2;D2:D4;A2:A4)";;;;;
D4;"=LOOKUP(C2;D2:D4;A2:A4)";3400;3400;;;
CI;;;2390;;;
F5;;;900;;;
;"LOOKUP(C6;D6:D11;A6:A11)";;;;;
D4;"=LOOKUP(C6;D6:D11;A6:A11)";3600;900;;;
F4;;;3600;;;
CI;;;2390;;;
D4;;;900;;;
B4;;;2250;;;
D4;;;900;;;
;;;;;;
;;;;;;
;"LOOKUP(C15;D15:D17;A15:A17)";;;;;
D4;"=LOOKUP(C15;D15:D17;A15:A17)";3600;900;;;
F4;;;3600;;;
CI;;;2390;;;
;;;;;;
;"LOOKUP(C20;D20:D27;A20:A27)";;;;;
D4;"=LOOKUP(C20;D20:D27;A20:A27)";3600;900;;;
F4;;;3600;;;
F6;;;3650;;;
F5;;;3700;;;
CI;;;2390;;;
D4;;;900;;;
B4;;;2250;;;
D4;;;900;;;

4
2017-11-17 11:28


起源




答案:


你原因 LOOKUP 失敗的原因是必須放入lookup_vector中的值 升序

...,-2,-1,0,1,2,...,A-Z,FALSE,TRUE;

除此以外, LOOKUP 可能無法返回正確的值

有關詳情,請參閱鏈接:

https://support.office.com/en-gb/article/LOOKUP-function-446d94af-663b-451d-8251-369d5e3864cb


7
2017-11-17 12:22



這就是我錯過的,謝謝你的答案! - Jonathan


如果我已經理解你想要做什麼,我會建議使用 INDEX 和 MATCH

請參閱我在第一個示例中可以使用的示例:

=INDEX(A2:A4,MATCH(C2,D2:D4,0),1)

enter image description here

你也可以使用 OFFSET 這經常被忽視:

=OFFSET(A2,MATCH(C2,D2:D4,0)-1,0)

8
2017-11-17 11:37



謝謝,我也有興趣知道原因 LOOKUP 沒有返回正確的值。任何的想法? - Jonathan
我很想知道LOOKUP現在是如何工作的,當我嘗試時,我得到了與你相同的結果,很奇怪 - PeterH
顯然LOOKUP使用唯一的文檔進行二進制搜索,解釋語法部分中的小註釋... - ratchet freak
@BruceWayne這只是我保存在個人工作簿中的宏,然後添加到功能區中,以便我可以在任何工作簿中使用它們 - PeterH
@BruceWayne不記得我學到了什麼,但這個鏈接有一些簡單的步驟 dummies.com/software/microsoft-office/excel/... - PeterH


@Jonathan,我想建議TWO Formula。

一級方程式是,, = LOOKUP(5,1 /(D317:D319 = C317),A317:A319)

公式2是,, =查詢($ 317加元,D317:D $ 339,A317:339澳元)

注意: 對於式1,數據范圍是A317至D317。

注意: 對於公式2,數據范圍是A317至D339。

對於第一個公式。

C317中的查找值

查找範圍是D317到D319。

結果矢量範圍是A317到A319。

注意: 您需要為每個數據范圍編寫公式。

注意 也適用於公式1,而不是5應使用大於1的任何值。使用5/1查找True&False。

其他預防措施 數據范圍應按升序排序。

此外,對於公式2,我使用了整個數據范圍,因為只有空行。

希望這對您有所幫助,經過我的測試後,我已經發布了解決方案。如果需要,我可以上傳屏幕截圖。


2
2017-11-17 12:44



我測試過,一級方程式似乎忽略了排序,所以這是一個有趣的轉折。你認為你也可以解釋你是怎麼來找到它的 1/(D317:D319 = C317) 也是一個'矢量'? - Jonathan
我認為它的工作原理是創建{#DIV / 0,#DIV / 0,1}的向量,只使用1值然後從查找向量中查找。因為你在這部分改變了5並不重要= LOOKUP(5。整體非常聰明的公式 - PeterH
我現在明白了,LOOKUP然後搜索最接近的最大值為5並且是1.這確實很整潔,@ User91504謝謝。 - Jonathan
最終,計算機以二進制格式搜索數據,並以真或假的方式進行證明。矢量格式是,在1行或列中搜索找到最大的一個,如果矢量範圍沒有被排序,它可能找到最小,然後查找將返回錯誤#N / A.這就是Lookup有一個名為Array的模式的原因,它可以搜索多個列和行。 - Rajesh S
由於您的要求是修復現有的公式,否則我總是更喜歡索引和匹配組合。無論如何我們都解決了這個問題,終於有了一個美好的結局,。 - Rajesh S


來自 辦公室支持網站

重要:lookup_vector中的值必須按升序排列:..., - 2,-1,0,1,2,...,A-Z,FALSE,TRUE;否則,LOOKUP可能無法返回正確的值。大寫和小寫文本是等效的。

這在此明確表示 VLOOKUP功能,正式取代LOOKUP,其中有一個最後一個參數,可以選擇模仿LOOKUP的行為(需要排序的數據)或搜索未排序的數據。


2
2017-11-17 19:02





我發現如果我重新排序表,即使一切看起來都是有序的,LOOKUP會返回正確的答案。


1
2017-11-17 15:12



你能澄清一下:什麼是重新排序表,你有一個例子嗎? - Jonathan