vba sumifs对日期感到困惑,四月错误的结果

|| 我正在关注另一个“堆栈溢出”问题,这非常启发人,但是当我对结果进行合理性检查时,我在4月得到了这种特殊的异常行为,任何
rev_date
4月的结果都是0。
rev_date
grid_date
间隔,但是发生相同的事情,我能怪系统日期配置吗?我想念什么? 恕我直言,我宁愿使用in-excel公式代替UDF,但是这种奇怪的结果在我的脑海里却很痒。 使用此UDF:
Public Function GRIDSALES(rev_date As Date, grid_date As Date) As Double

  Dim Team As Range
  Dim First_PD As Range
  Dim PAmount1 As Range

  Application.Volatile (True)

  Set PAmount1 = Sheets(\"Sheet1\").Range(\"$F6:$F12\")
  Set First_PD = Sheets(\"Sheet1\").Range(\"$E6:$E12\")
  Set Team = Sheets(\"Sheet1\").Range(\"$D6:$D12\")

            GRIDSALES = Application.WorksheetFunction.SumIfs( _
            PAmount1 _
            , Team, \"<>9\" _
            , First_PD, \">=\" & Format$(rev_date, \"dd mmm yyyy\") _
            , First_PD, \"<=\" & Format$(Application.WorksheetFunction.EoMonth(grid_date, 0), \"dd mmm yyyy\"))

End Function
    
已邀请:
        我遵循了您所拥有的,并且得到了正确的结果。您正在将日期设置硬编码为\“ dd mmm yyyy \”,这是我在处理法语设置时发现的,无法识别。通过控制面板检查设置,了解您所拥有的区域设置。 另外,请检查您的日期mm / dd使用情况。更改单元格格式以指示月份名称,而不是\ '05 \'。这样一来,您可以验证自己没有反转日期和月份,而且每个日期实际上都是一个日期。     
        不确定,但是我认为在VBA中,您应该始终使用美国日期格式。我通常用一个常量定义它:
const kUsDate = \"mm\\/dd\\/yyyy\"
反斜杠是转义字符。 作为证明,请尝试以下操作:在B2中输入一个日期,例如20/6/2011(法语样式),然后从VBA中运行代码
Debug.Print ActiveCell.NumberFormat
Excel将返回:
m/d/yyyy
CQFD ;-)     

要回复问题请先登录注册