如何修改Excel VBA的InBetween UDF以支持小数而非仅整数?
修复VBA函数处理小数的问题
原函数的核心问题是参数被定义为Integer类型,会自动截断小数部分,导致输入3.5时被转为3、6.5转为6,进而计算出的中间值范围错误。以下是修复方案:
- 将参数类型改为
Double,支持小数输入 - 计算范围时,取大于MyFirst的最小整数作为起始值,小于MyLast的最大整数作为结束值
- 处理起始值大于等于结束值的边界情况,避免返回无效内容
修复后的代码:
Function InBetween(MyFirst As Double, MyLast As Double) As String Dim foo As String Dim startNum As Long Dim endNum As Long Dim i As Long ' 确定有效整数范围 startNum = WorksheetFunction.Ceiling(MyFirst, 1) endNum = WorksheetFunction.Floor(MyLast, 1) ' 无有效中间值时返回空字符串 If startNum >= endNum Then InBetween = "" Exit Function End If ' 初始化结果并遍历拼接 foo = CStr(startNum) For i = startNum + 1 To endNum foo = foo & "," & CStr(i) Next i InBetween = foo End Function
测试验证
- 输入
=InBetween(3.5,6.5),返回4,5,6,符合预期 - 输入
=InBetween(-2.3,1.7),返回-2,-1,0,1 - 输入
=InBetween(2.1,2.9),返回空字符串(无有效中间整数)
内容的提问来源于stack exchange,提问作者Holden Rheault
相关产品推荐
相关产品推荐

