VBA SUMIF对日期感到困惑-产生错误的结果
||
下面的代码产生错误的结果。在工作表上,我们使用两种相同的日期格式(dd / mm / yyyy),但是当运行以下格式时,它似乎试图将rev_date解释为美国日期格式,同时将grid_date解释为正确的英国格式。
我们通过将工作表上的rev_date更改为American格式进行了测试,在这种情况下,它会产生正确的结果。
关于为什么需要将rev_date更改为美国格式的任何想法,我们希望保留为英国格式?
Public Function GRIDSALES(rev_date As Date, grid_date As Date) As Double
Dim Order_Type As Range
Dim Final_Price As Range
Dim PaidAlt As Range
Dim Excl_Rev As Range
Dim PAmount1 As Range
Dim PMethod1 As Range
Dim PAmount2 As Range
Dim PayDate2 As Range
Dim PMethod2 As Range
Dim Vstatus As Range
Dim Team As Range
Application.Volatile (True)
Set Order_Type = Sheets(\"KRONOS\").Range(\"$D:$D\")
Set Final_Price = Sheets(\"KRONOS\").Range(\"$H:$H\")
Set PaidAlt = Sheets(\"KRONOS\").Range(\"$I:$I\")
Set Excl_Rev = Sheets(\"KRONOS\").Range(\"$K:$K\")
Set PAmount1 = Sheets(\"KRONOS\").Range(\"$O:$O\")
Set First_PD = Sheets(\"KRONOS\").Range(\"$Q:$Q\")
Set PMethod1 = Sheets(\"KRONOS\").Range(\"$R:$R\")
Set PAmount2 = Sheets(\"KRONOS\").Range(\"$T:$T\")
Set PayDate2 = Sheets(\"KRONOS\").Range(\"$V:$V\")
Set PMethod2 = Sheets(\"KRONOS\").Range(\"$W:$W\")
Set Vstatus = Sheets(\"KRONOS\").Range(\"$DL:$DL\")
Set Team = Sheets(\"KRONOS\").Range(\"$DO:$DO\")
GRIDSALES1 = Application.WorksheetFunction.SumIfs( _
PAmount1 _
, Team, \"<>9\" _
, Vstatus, \"<>rejected\", Vstatus, \"<>unverified\" _
, Excl_Rev, \"<>1\" _
, PMethod1, \"<>Credit\" _
, PMethod1, \"<>Amendment\" _
, PMethod1, \"<>Pre-paid\" _
, First_PD, \">=\" & rev_date _
, First_PD, \"<=\" & Application.WorksheetFunction.EoMonth(grid_date, 0))
GRIDSALES = GRIDSALES1
结束功能
没有找到相关结果
已邀请:
3 个回复
凰葱崎济邯
还有这个
您将两个“ 3”类型的变量(“ 4”和“ 5”)隐式强制为“ 6”类型。隐式强制是不正确的做法,这是为什么不正确的做法的一个非常典型的例子。您的日期应使用明确的格式(例如,
以这种格式,2011年1月12日不能与2011年12月1日混淆。
青董据零
谷靛