Vba 函数不工作,因为我使用日期?
我正试图编写一个依赖于日期的函数,但我无法让它工作。Excel不断告诉我,此公式中使用的值的数据类型错误。所以它必须是日期,因为我有另一个函数,除了添加一个datevalue之外,它是完全相同的 有人在Excel单元格C10中写了一个日期,然后我不想从表(在同一工作簿的另一张表上)中总结某些数字(预测通货膨胀率,p列),在该表中,它取决于开始日期(I列)和结束日期(J列) 我已经检查过Excel是否将单元格C10解释为日期,但有序列号 但我不明白为什么这是一个问题,因为我用它来比较其他日期(序列号)Vba 函数不工作,因为我使用日期?,vba,excel,Vba,Excel,我正试图编写一个依赖于日期的函数,但我无法让它工作。Excel不断告诉我,此公式中使用的值的数据类型错误。所以它必须是日期,因为我有另一个函数,除了添加一个datevalue之外,它是完全相同的 有人在Excel单元格C10中写了一个日期,然后我不想从表(在同一工作簿的另一张表上)中总结某些数字(预测通货膨胀率,p列),在该表中,它取决于开始日期(I列)和结束日期(J列) 我已经检查过Excel是否将单元格C10解释为日期,但有序列号 但我不明白为什么这是一个问题,因为我用它来比较其他日期(序列
公共函数FetchFactorInflation(产品为字符串,ArgName为字符串)为双精度
作为日期的尺寸基准
数据=日期值(工作表(“InputAriff”).范围(“C10”).值)
Dim MinDatum,MaxDatum为双精度
MinDatum=“=”&基准
FetchFactorInflation=Application.SumIfs(工作表(“关税”).Range(“P:P”)_
工作表(“关税”)。范围(“I:I”)、MinDatum、_
工作表(“关税”)。范围(“J:J”)、MaxDatum、_
工作表(“关税”)。范围(“K:K”)、产品、_
工作表(“关税”)。范围(“L:L”)、ArgName)
端函数
错误的数据类型来自这里:
MaxDatum = ">=" & Datum
MaxDatum是双精度的,您将为它指定=
。无法将其转换为双精度。试着绕过去
最快的解决方案是这样写:
Dim MinDatum,MaxDatum
而不是
Dim MinDatum,MaxDatum为双精度
因此,MaxDatum
可以很容易地转换为您所需的数据,因为它是可变的,而且MinDatum
错误的数据类型来自这里:
MaxDatum = ">=" & Datum
MaxDatum是双精度的,您将为它指定=
。无法将其转换为双精度。试着绕过去
最快的解决方案是这样写:
Dim MinDatum,MaxDatum
而不是
Dim MinDatum,MaxDatum为双精度
因此,MaxDatum
将很容易转换为您需要的内容,因为它将是变量以及MinDatum
首先,定义Dim MinDatum,MaxDatum为Double
意味着MaxDatum为Double
和MinDatum为variant
,它需要是Dim MinDatum为Double,MaxDatum为双精度
。其次,您需要将日期转换为双精度,如MinDatum=CDbl(Datum)
。最后,当您使用SumIfs
功能进行检查时,您将使用工作表(“关税”).Range(“I:I”),“>=”&MinDatum
。感谢您的回答,它解决了我的问题!首先,定义Dim MinDatum,MaxDatum为Double
意味着MaxDatum为Double
和MinDatum为Variant
,它需要Dim MinDatum为Double,MaxDatum为Double
。其次,您需要将日期转换为双精度,如MinDatum=CDbl(Datum)
。最后,当您使用SumIfs
功能进行检查时,您将使用工作表(“关税”).Range(“I:I”),“>=”&MinDatum
。感谢您的回答,它解决了我的问题!