Board logo

標題: excel 2003 match 公式 bug? [打印本頁]

作者: eigen    時間: 2017-5-9 15:48     標題: excel 2003 match 公式 bug?

excel 2003 match 公式 bug?

f欄的公式 =MATCH(E7,E:E,1)

重點第一個編號只如果一個就會變成 #N/A

如果第一個編號『有兩個以上』,就會很正常

完全搞不清楚為什麼?
作者: ML089    時間: 2017-5-9 16:22

本帖最後由 ML089 於 2017-5-12 01:18 編輯

如果 match_type 是 1,則 MATCH 函數會找到等於或僅次於 lookup_value 的值。Lookup_array 必須以遞增次序排列:...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE。

正確使用範圍比較不會出錯
=MATCH(E7,E$7:E$15,1)

F7與M7是一樣的,F7會有問題是VLOOKUP 採用2分法查詢時,
F7 最後一組比較是 E6及E7,因為E6>E7未照大小排列產生錯誤。

你把E6內容"編號" 改為 "A",公式就不會有錯誤,因為 "A" < "A001"。
你把E6內容"編號" 改為 "B",公式還是會有錯誤,因為 "B" > "A001"。
作者: eigen    時間: 2017-5-9 23:45

回復 2# ML089


    謝謝你的解釋,我還是弄不懂

一、我無法將 E:E 改成 E7:E2564 ,因為編號的位置不一定在 E6,所以ARRAY 的起點不一定在E7


二、我有將 E6:E15 遞增排序 編號是在 A001 之上 所以依序應該是 編號 A001 A002 B001 B002 C001 C003 .....

我完全無法理解為什麼只有一個 A001 就會出錯,變成 #N/A

只有一個 B001 C001 或 C002 時,就不會出錯

甚至只要有『兩個』以上的A001 也不會出錯?

我已經看過 MATCH 的說明 數十次,還是無法理解,為什麼會有上述的問題?

能否為我解釋一下,為什麼一個A001不行,兩個以上A001就可以?

※我有將 E6:E16選起來排序,編號會被排到最後,也就是說 這個 ARRAY 沒有照遞增排列,那 A001有問題,其它B001 C001 應該都有一樣的問題才是?
一開始我開始設計時就是沒看到問題,所以一直寫下去,等整個寫完之後,才會偶而發生,只有一個 A001的問題(煩死了)
如果一開始就看到整體性的問題,我就會用 =MATCH(E7,E:E,0) 而不會用 1 (重點是整個都寫完整,一改下去又是一堆BUG要抓):'(
作者: ML089    時間: 2017-5-10 00:29

回復 3# eigen

你先找 "LOOKUP 二分法" 看看相關內容,再看看我回覆的簡要說明就能懂。

LOOKUP 二分法下列網頁有探討
http://club.excelhome.net/thread-872105-1-1.html
   
PS: VLOOKUP(..., ..., 1) 與 LOOKUP(..., ...) 查詢方式相同


若使用 MATCH(..., ..., 0) 就比較沒有這些問題
作者: ML089    時間: 2017-5-10 18:44

本帖最後由 ML089 於 2017-5-10 18:50 編輯

回復 3# eigen

這跟1個或2個沒有關係

你把E6內容"編號"刪除,就會對了

E6內容"編號" > E7 內容"A0001",就是不符合資料內容要漸大的規則(當VLOOKUP(..., ..., 1)時)
當 內容"A0001" 有2筆時不會錯,是因為查詢時當好沒有被檢查到,VLOOKUP如何查詢上封已經有說明了。
作者: eigen    時間: 2017-5-12 00:13

回復 4# ML089


    謝謝,我看完二分法了 ,我知道問題出在那了~~~從中間往上找 A001

在只有一個的情況下,找到第一個,必需再往上找到另一個  『小於等於』的值,結果找到 編號,然後就 #N/A 了

如果有兩個,從中間往上找到第二個 A001 ,再往上找到另一個 『小於等於』的值,就能確定 第二個 A001 的位置正確~~

其它的 B001 C001 因為往上或往下,還能找到小於等於的值,所以沒有 #N/A

所以在現況下,我可能真的要大改,改用 MATCH (,,0) 直接找一樣的~~

謝謝你的指導~~~:handshake




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)