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才是精確匹配哦。”
“我又不傻,當然知道。”
“那你表格截圖給我看下。”
“公式在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
等了大概十分鐘,就收到一個網名叫“看見星光”的男生的答覆了。
先說一下什麼是浮點運算。
計算機是二進制,人類的數學是十進制。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無語以對。
閱讀更多 薄荷草1977 的文章