VBA代码优化需求:实现可见单元格求和值与目标金额的±10美元范围匹配
解决VBA可见单元格求和的误差范围判断问题
你的需求很清晰——因为货币计算的浮动,需要允许可见单元格求和值和目标金额之间有±10美元的误差范围,而不是严格相等。我帮你修改代码实现这个逻辑:
.AutoFilter Field:=3, Criteria1:=docnum .AutoFilter Field:=6, Criteria1:=pmtdate Range("H1").Select Selection.Offset(1, 0).Select Range(Selection, Selection.End(xlDown)).Select visibleTotal = Application.WorksheetFunction.Sum(Selection.SpecialCells(xlCellTypeVisible)) ' 新增误差范围判断逻辑 If Abs(visibleTotal - pmtamt) <= 10 Then MsgBox "匹配成功!求和值:" & visibleTotal & ",目标金额:" & pmtamt & ",误差在±10美元范围内" Else MsgBox "不匹配!求和值:" & visibleTotal & ",目标金额:" & pmtamt & ",误差超出±10美元范围" End If
关键修改说明:
- 用
Abs(visibleTotal - pmtamt) <= 10替代原来的严格相等判断:Abs()函数会计算两个数值差值的绝对值,只要这个绝对值不超过10,就判定为匹配,完美覆盖±10美元的误差需求 - 优化了MsgBox的提示内容,让你能直观看到求和值、目标金额以及匹配结果,方便调试和确认
- 如果之后需要调整误差范围,直接把代码里的
10改成你需要的数值即可
内容的提问来源于stack exchange,提问作者kamal_hamad
相关产品推荐
相关产品推荐

