我有一个应用程序,用于返回与大量值中的某些值最接近的匹配项(如我之前的问题中所示),我选择了 VBA 解决方案。在使用上述应用程序的过程中,我观察到值 0.5 的结果不正确。我一直在使用 VBA Round 函数,我发现它返回 0 表示 0.5 舍入为整数,而工作表舍入函数返回 1。奇怪的是,VBA 舍入函数返回 2 表示 1.5。我不得不用工作表函数代替 VBA 函数。
我错过了什么吗?
我有一个应用程序,用于返回与大量值中的某些值最接近的匹配项(如我之前的问题中所示),我选择了 VBA 解决方案。在使用上述应用程序的过程中,我观察到值 0.5 的结果不正确。我一直在使用 VBA Round 函数,我发现它返回 0 表示 0.5 舍入为整数,而工作表舍入函数返回 1。奇怪的是,VBA 舍入函数返回 2 表示 1.5。我不得不用工作表函数代替 VBA 函数。
我错过了什么吗?
这是一个已知问题。VBA Round() 函数使用银行家的舍入,而电子表格单元格函数使用算术舍入。在此处查看详细信息:
PRB:VBA 6 和 Excel 电子表格中的舍入函数不同
微软提出的解决方法是编写一个自定义函数来获得想要的结果。
银行家的四舍五入总是将 0.5 舍入到最接近的偶数,并且是会计标准,这就是 Excel 以这种方式工作的原因。算术舍入将0.5 舍入到下一个数字。