我想知道我是否可以使用通配符表示日期?
我的日期和时间存储在A1:A5上,我想要计算有多少项目 无论时间如何,标准为“8/12/2015”,输出 compl 应为2,因为A1和A4包含日期“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
答案 0 :(得分:1)
确保您的日期是日期,而不是字符串。
确保使用ISO标准格式,而不是一些随机日期顺序。
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")
修改强> 对我来说,添加格式功能是必要的,以保持日期为人类格式供Excel理解。如果要确保它有效,请更改这样的Worksheetfunction行:
WorksheetFunction.CountIfs(Range("a1:a5"), ">=" & Format(xdate, "yyyy-mm-dd"), _
Range("a1:a5"), "<" & Format(xdate + 1, "yyyy-mm-dd"))
答案 1 :(得分:0)
在Excel中,日期自1970年1月1日起存储为数字。这意味着你写的日期是42239。
当2位小数是小时。如果此数字包含特定日期中的所有单元格,您可以使用函数round
(带0位数)。
答案 2 :(得分:0)
如果它不是必须在VBA和countif(我不知道目标是什么): = SUMPRODUCT((地板(值(A1:A5),1)=日期(2015,8,20))* 1) 否则有循环选项等等,但没有目的,很难指出正确的方向