Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3645|回复: 12

[已解决]求助:一个关于VLOOKUP的问题

[复制链接]
发表于 2010-6-26 15:21 | 显示全部楼层 |阅读模式

请看附件 gh9EEJRn.rar (8.54 KB, 下载次数: 0)

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2010-6-26 15:32 | 显示全部楼层

应该是浮点计算的原因。

具体原因待查明。

回复

使用道具 举报

 楼主| 发表于 2010-6-26 15:34 | 显示全部楼层

QUOTE:
以下是引用那么的帅在2010-6-26 15:32:00的发言:

应该是浮点计算的原因。

具体原因待查明。

谢谢 再等等

回复

使用道具 举报

发表于 2010-6-26 15:45 | 显示全部楼层

xuexi
回复

使用道具 举报

发表于 2010-6-26 15:46 | 显示全部楼层

来学习下

回复

使用道具 举报

发表于 2010-6-26 15:58 | 显示全部楼层

解决方法:工具-选项-重新计算,勾选“以显示精度为准”

问题所在可能是(以下是讨论记录):

EP坛友A 15:01:44
I4改成=ROUND(G4-K4,2)就对了
EP坛友A 15:01:58
有舍入误差
EP坛友B 15:02:00
是的,但我不知道 ,为什么 
EP坛友A 15:09:37
我的理解是:
直接输入的,他直接就存储你输入的字符串,到运算时才转化;
而你用引用,他就会把你输入的先转化成2进制数,再引用过来
而小数并不是每一个都能准确用二进制来表示的

 
EP坛友A 15:09:53
进存在进制转换时的舍入误差
EP坛友A 15:10:18
I3虽然显示1.7,但是他实际上小于1.7
EP坛友B 15:14:37
真正的高手 
EP坛友B 15:15:01
怎样才能避免这种错误呢 
EP坛友A 15:16:04
工具-选项-重新计算,勾选“以显示精度为准”
EP坛友B 15:19:18
谢谢
精度为准,有什么好处,也什么坏处 
EP坛友B 15:19:56
有什么坏处 
EP坛友A 15:20:13
勾选了,你每一次计算完,他都给你按你要求的精度储存了;不勾选,他每次都按最高精度给你存着。我是这么理解的,我试试
EP坛友B 15:21:51
我可以加你好友吗 
EP坛友A 15:22:10
 
EP坛友A 15:22:22
可以啊,我是EXCEL初学者
EP坛友B 15:23:38
你初学都啊
那我是什么啊
 
EP坛友A 15:23:45
A1:1
B1:3
C1:=1/3
D1:=C1*3

C1选成显示两位小数

勾选之后,D1值为0.99,不勾选是1
 
EP坛友B 15:23:47
你发的图片,我没看到 
EP坛友B 15:24:21
也就是说,一般情况下,就把这个勾给打上,是吧。 
EP坛友A 15:24:28
没看到不要紧,看到我说明的就行了
EP坛友A 15:24:38
看需要咯
EP坛友A 15:24:56
其实这个勾我也是刚百度出来的,不然我还不知道有这么个勾
EP坛友A 15:25:27
遇到问题不是慢慢地试,就是百度,我就这点本事了,呵呵
EP坛友B 15:26:31
什么情况,用打勾,
什么情况,不用打勾呢
 
EP坛友A 15:27:32
看需要咯,像你这样要排序查找的,只能勾上,不然东西就查错了
EP坛友A 15:27:51
如果需要数字非常精确的,就不能打勾了
 
EP坛友B 15:28:37
打勾  是不是影响速度吧 
EP坛友A 15:30:15
不会
EP坛友B 15:30:31
谢谢你了 
EP坛友A 15:30:48
不客气,我自己也学到了新东西啊

回复

使用道具 举报

发表于 2010-6-26 16:05 | 显示全部楼层

等待中

回复

使用道具 举报

发表于 2010-6-26 16:07 | 显示全部楼层

原因

EXCEL在计算小数时采用浮点运算,浮点运算是将十进制的小数转换为二进制的小数,经过计算后,再转换回十进制小数。由于小数的位数受计算机的限制,导致转换前后产生极小的误差。这些误差是计算机自身原理限制的,和VLOOKUP函数无关。

具体原理和算法

(以下是微软的官方解释)

在 Excel 中浮点运算可能会给出不准确的结果

[此贴子已经被作者于2010-6-26 16:06:59编辑过]
回复

使用道具 举报

发表于 2010-6-26 16:10 | 显示全部楼层    本楼为最佳答案   

解决方法:1、工具-选项-重新计算,勾选“以显示精度为准”

          2、用ROUND函数确认精度

关于小数的2进制表示:

小数部分计算方法:乘2取整法,即每一步将十进制小数部分乘以2,所得积的小数点左边的数字(0或1)作为二进制表示法中的数字,第一次乘法所得的整数部分为最高位。

因此,不是任何一个小数,都可以用2进制数准确表示的。

计算机运算,包括算术运算、逻辑运算、浮点运算等,其中小数运算只能使用浮点运算,浮点运算使用的是二进制数进行运算,则必然存在进制转换中的舍入误差,即便是加减法也不例外。

[此贴子已经被作者于2010-6-26 16:14:44编辑过]
回复

使用道具 举报

发表于 2010-6-26 16:14 | 显示全部楼层

QUOTE:
以下是引用守望麦田在2010-6-26 15:34:00的发言:

谢谢 再等等

不用等了,就浮点的原因,可以使用精确匹配看一下,第一行直接查找不到,而第二行可以找到,说明第一行与第二行根本不一样,只是看起来是相等的。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-24 06:19 , Processed in 2.152108 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表