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)否则有周期等选项,但没有目的很难指出正确的方向