日期范围的 CountIfs 对于大于

问题描述 投票:0回答:2

我正在尝试在列中搜索

的匹配项
  1. 原因,
  2. 大于 MinDate 和
  3. 小于 MaxDate。

由于某种原因小于MaxDate返回零,我怀疑这可能是由于日期转换,但无法找到问题的根源。

我尝试将 CountIf 拆分为 2 个 CountIf 并进行减法,但最大日期仍然出现错误。 如果我尝试某些日期,我会得到一些值,但它们看起来不准确,这消除了日期计算器代码。

Q = MA.Range("H2").Value
Y = MA.Range("H3").Value
S = 1
If Q = 1 Or Q = 4 Then
    E = 31
Else
    E = 30
End If

MinDate = DateSerial(2016 + Y, (1 + ((Q - 1) * 3)), 1)
MaxDate = DateSerial(2016 + Y, (Q * 3), 30)

MA.Range("E21").Value = Application.WorksheetFunction.CountIfs(AC.Range("R1:R9999"), "=" & OP.Range("A21"), AC.Range("L1:L9999"), ">=" & MinDate, AC.Range("L1:L9999"), "<=" & MaxDate)
excel vba
2个回答
0
投票

我已经解决了,Excel中的日期有一个数字转换,它是按照美国标准日期格式计算的,尽管数据是以dd/mm/yyyy输入和输出的,即自1/1/1900以来的天数为一个整数。由于在工作中使用该数值,因此会导致不正确的输出。对于任何有兴趣解决这个问题的人,我使用了这些附加内容:

AC.Range("L1:L9999"), ">=" & CDbl(CDate(MinDate)), AC.Range("L1:L9999"), "<=" & CDbl(CDate(MaxDate))
。 感谢那些提供帮助的人。


0
投票

我确信所有这些答案都有一个很好的答案,我的问题是因为闰年而出现的。如果我使用 2/29/2022 作为范围限制,它会返回 0,如果我输入 9/31/,也会在其他月份测试这一点2022..返回零,切换到9/30/2022..返回正确#🤷🏻u200d♂️

© www.soinside.com 2019 - 2024. All rights reserved.