ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 671|回复: 10

[求助] VBA代码求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-28 13:31 | 显示全部楼层 |阅读模式
下面是我写的代码,income是单元格的值,运算时出现了错误,当income=0.18的时候,CheckGS被判断成=4,当income=0.22的时候,CheckGS却能够正确判断。请问哪位高手知道是什么原因。
Function CheckGS(income)
    If IsEmpty(income) Then
        CheckGS = ""
    Else
        If IsNumeric(income) = True Then
            x = Abs(income - 0.2)
            If x <= 0.02 Then
                CheckGS = 6
            ElseIf x > 0.02 And x <= 0.03 Then
                CheckGS = 4
            ElseIf x > 0.03 And x <= 0.04 Then
                CheckGS = 2
            ElseIf x > 0.04 Then
                CheckGS = 1
            Else
                CheckGS = ""
            End If
        End If
    End If
End Function

TA的精华主题

TA的得分主题

发表于 2018-9-28 13:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-9-28 14:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
x = Val(Abs(income - 0.2))
这个地方修改下吧
另外楼主的代码条件有些冗余的

TA的精华主题

TA的得分主题

发表于 2018-9-28 14:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liulang0808 发表于 2018-9-28 14:03
x = Val(Abs(income - 0.2))
这个地方修改下吧
另外楼主的代码条件有些冗余的

Val 转换后会改变数值判断是什么原因?请教一下

TA的精华主题

TA的得分主题

发表于 2018-9-28 14:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
wlmhit903 发表于 2018-9-28 14:46
Val 转换后会改变数值判断是什么原因?请教一下

就是找到了解决办法,
具体感觉可能在类型上有出入吧,不确定的

TA的精华主题

TA的得分主题

发表于 2018-9-28 14:55 | 显示全部楼层
liulang0808 发表于 2018-9-28 14:52
就是找到了解决办法,
具体感觉可能在类型上有出入吧,不确定的

从数值上看不出变化,类型肯定是有变化了,所以迷惑....

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-28 15:03 | 显示全部楼层
liulang0808 发表于 2018-9-28 14:03
x = Val(Abs(income - 0.2))
这个地方修改下吧
另外楼主的代码条件有些冗余的

Hi, 谢谢!现在正常了,请问原理是什么?
另外,请问冗余的条件是哪些,谢谢!

点评

这个问题经过其他大咖指点,是由于浮点数计算误差导致,增加了val保证类型相同。而不增加类型,使用系统默认会有出入的。  发表于 2018-9-28 16:56

TA的精华主题

TA的得分主题

发表于 2018-9-28 15:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
hw285151 发表于 2018-9-28 15:03
Hi, 谢谢!现在正常了,请问原理是什么?
另外,请问冗余的条件是哪些,谢谢!

具体原因,我也没有整清楚
If x <= 0.02 Then
                CheckGS = 6
            ElseIf x > 0.02 And x <= 0.03 Then
修改如下即可:
If x <= 0.02 Then
                CheckGS = 6
            ElseIf  x <= 0.03 Then

TA的精华主题

TA的得分主题

发表于 2018-9-28 16:52 | 显示全部楼层
加VAL是处理成数值,因有些数源可能是文本的格式。。你可以单步调试看看。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-28 17:15 | 显示全部楼层
hw285151 发表于 2018-9-28 15:03
Hi, 谢谢!现在正常了,请问原理是什么?
另外,请问冗余的条件是哪些,谢谢!

明白了,非常感谢!!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-16 05:50 , Processed in 0.025249 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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