star_yyx 2022-09-19 10:23 采纳率: 33.3%
浏览 15

为何单元格值明明相等,数据类型一致,但是if判断结果为不相等。

问题遇到的现象和发生背景

两张表的单元格值相等,但是if判断结果为不相等。

用代码块功能插入代码,请勿粘贴截图
Sub 开始校验()


Excel.Application.ScreenUpdating = False

Workbooks.Open filename:="C:\Users\HXJZ\Desktop\VBA\!test\校验文件\G0100.xls"

syzqy01001 = ActiveWorkbook.Sheets(1).Range("c125")  '所有者权益

ActiveWorkbook.Close

Workbooks.Open filename:="C:\Users\HXJZ\Desktop\VBA\!test\校验文件\G0800.xls"

syzqy08001 = ActiveWorkbook.Sheets(1).Range("d34")  '所有者权益


ActiveWorkbook.Close


'所有者权益
If syzqy01001 = syzqy08001 Then
    Sheets(1).Range("b9") = "正确"
Else
    Sheets(1).Range("b9") = "错误"
End If


Excel.Application.ScreenUpdating = True


End Sub

运行结果及报错内容

校验结果为错误(不相等)

我的解答思路和尝试过的方法

验证:两个的数值类型都是double,如果用int函数,校验结果显示相等。

我想要达到的结果

相等

  • 写回答

1条回答 默认 最新

  • 於黾 2022-09-19 10:42
    关注

    excel里的double后面有8位小数,你能看见的小数位数只有2位,你看不见的有6位
    看起来相等和实际相等不是一个概念
    要么相减取绝对值再判断小于一个小数,比如0.0001
    要么先乘以100再用int判断

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 9月19日

悬赏问题

  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错