INDEX+MATCH有個致命的BUG,你知道嗎?


2018-02-26 20:47

“是誰說MATCH函數木有BUG的?給我shi出來!”

小A坐在電腦前咬牙切齒,她就想不明白了,學個函數為什麼這麼難,到處都是坑,三天兩頭撞BUG。VLOOKUP……算了,不提了……COUNTIF……算了,也不提了,往事不要再提,人生已多風雨……啊呸!

Excel交流群裡,那個對男生鼻孔朝天對女生嘻嘻哈哈的高手姍姍來遲。

“腫麼了?小A!”他問。

“是你說MATCH沒有BUG的?可我有個數,INDEX+MATCH查不到,明明存在的一個數,就是查不到,不是BUG是什麼?”

“不可能吧?你是不是又弄錯數據類型了。小A,你可能不知道,MATCH函數和VLOOKUP函數一樣,區分數據類型,文本數值和純數值不匹配的。”

“誰說我不知道?我知道!我都失業了,還能不知道嗎?不是這個問題,也不是空格什麼的問題,這些錯我都排查過了。這絕對是個BUG!”

“小A,你是不是弄錯MATCH第3參數了?0才是精確匹配哦。”

“我又不傻,當然知道。”

“那你表格截圖給我看下。”


INDEX+MATCH有個致命的BUG,你知道嗎?


“公式在B9單元格。”小A說。

高手想了下:“小A,是不是小數點後面有很多小數,只是沒顯示出來啊?”

“都顯示了。0.204就是0.204,一個字不多,一個字也不少!”

“那你把文件發給我看下。”

高手打開文件一看,就傻眼了。D2單元格有個公式是=B2+C2,結果確實是0.204,用LEN函數測試了下,確實一個字不多,也一個字不少。

高手很困惑。他輸入公式=D2=A9,結果竟然返回TRUE。這說明D2確實等於A9啊,可是為什麼MATCH函數沒找到呢?

“是不是BUG?你說是不是BUG?”小A憤憤的問。“我又不是皇阿瑪,我怎麼就天天見八阿哥呢??”

“我上個廁所,待會聊啊。”高手說。

十分鐘……

二十分鐘……

高手渺無音訊。

小A知道,高手這是尿遁了。

小A實在無奈,只好到EH論壇的函數版塊發求助帖。該版塊號稱祖國大陸函數起源聖地,網址如下:http://club.excelhome.net/forum-3-1.html

等了大概十分鐘,就收到一個網名叫“看見星光”的男生的答覆了。


INDEX+MATCH有個致命的BUG,你知道嗎?


先說一下什麼是浮點運算。

計算機是二進制,人類的數學是十進制。Excel在對數值進行運算的時候,不管是加減乘除還是乘冪,都需要先將十進制轉換為二進制,計算完了,再轉換成十進制呈現出來……換來換去,就產生了浮點運算。

<strong>不同函數對浮點的計算精度不同。等號和VLOOKUP等函數,只比對數值的15位精度,它們認為0.204和0.203+0.001是相等的,但MATCH函數的計算精度要高於等號,它就認為兩者是不相等的,所以它的計算結果應該是錯誤值。

和MATCH函數相同情況的還有DELTA函數

=DELTA(0.204,0.203+0.001)

這條公式返回結果也為0,意思是兩個值不相等。

……

……

“原來是這樣呀,那我以後是不是就不能用MATCH函數了呀?”小A問。

“文本隨意啊,含有複雜數學運算的,最好注意一下,<strong>儘量用ROUND函數修約後再使用

。”

“有沒有沒有BUG的函數?”

“什麼叫BUG啊?人家那叫個性,這年頭,誰還沒個性啊?別拿函數不當人看待,世間萬物皆有靈性,女施主不要著相啊。”

小A無語以對。

INDEX+MATCH有個致命的BUG,你知道嗎?


分享到:


相關文章: