Excel VBA Countifs通配符标准 – date

我想知道如果我可以使用通配符的date?

我有date与时间存储在A1:A5,我想统计有多less项目
那里的标准是“8/12/2015”,无论何时,输出compl应该是2,如A1和A4包含date“8/12/2015”

A1 = 8/12/2015 12:00 AM

A2 = 8/25/2015 3:00 PM

A3 = 8/23/2015 4:00 AM

A4 = 8/12/2015 1:30 AM

A5 = 8/20/2015 12:00 AM

Sub counter() With Sheet1 Dim compl As String Dim xdate As String, xdate2 As String xdate = "08/12/2015" xdate2 = xdate & "*" compl = WorksheetFunction.CountIfs(Range("a1:a5"), xdate2) Debug.Print compl End With End Sub 

确保你的date是一个date,而不是一个string。

确保使用ISO标准格式,而不是随机的date顺序。

 Dim xdate As date xdate = "2015-08-12" compl = WorksheetFunction.CountIfs(Range("a1:a5"), ">=" & xdate, _ Range("a1:a5"), "<" & (xdate + 1)) 

此外,您不需要VBA,只需使用Excel的COUNTIFS函数即可:

 =COUNTIFS(a1:a5,">=2015-08-28",a1:a5,"<2015-08-29") 

编辑对于我来说,添加格式化function是必要的,以保持Excel的人格格式的date来理解。 如果你想确定它的工作原理,请更改Worksheet函数行:

 WorksheetFunction.CountIfs(Range("a1:a5"), ">=" & Format(xdate, "yyyy-mm-dd"), _ Range("a1:a5"), "<" & Format(xdate + 1, "yyyy-mm-dd")) 

在Excel中,date自1970年1月1日起以数字forms存储。 这意味着你写的date是42239.当2个十进制数字是小时。 当这个数字包括特定date的所有单元格时,你可以使用函数round (0数字)。

如果它不必在VBA和countif(我不明白是什么目标):= sumproduct((floor(value(A1:A5),1)= date(2015,8,20))* 1)否则有周期等选项,但没有目的很难指出正确的方向