自定义函数引用单元格与手动输入日期时计算结果不一致问题
问题原因与解决办法
核心问题
你手动输入的09/09/2022会被Excel/VBA当成除法运算(9÷9÷2022≈0.000494),哪怕参数定义为Date类型,也会先把这个计算结果转成日期(对应1900年1月1日左右的无效日期),自然得到错误结果;而引用单元格时,单元格里的日期是Excel的日期序列号(本质是数值),能被函数正确识别为Date类型。
解决方法
- 手动输入日期时,用英文双引号包裹,让Excel识别为日期字符串:
Function("09/09/2022","07/18/2022",Type1) - 或者直接使用Excel日期对应的序列号输入(可通过
=DATE(2022,9,9)获取序列号):Function(44831,44758,Type1) - 优化函数内部逻辑,增加参数校验,避免非法输入:
Function YourFunctionName(date1 As Date, date2 As Date, calcType As String) As Variant ' 先校验输入是否为有效日期 If Not IsDate(date1) Or Not IsDate(date2) Then YourFunctionName = "输入日期无效,请检查格式" Exit Function End If ' 你的原有计算逻辑 ' ... End Function
内容的提问来源于stack exchange,提问作者shiggyg123
相关产品推荐
相关产品推荐

