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,你知道吗?


分享到:


相關文章: