带通配符条件的Excel VBA Countifs-用于日期
我想知道我是否可以使用通配符作为日期 我将日期和时间存储在A1:A5上,我想数一数有多少项带通配符条件的Excel VBA Countifs-用于日期,excel,vba,wildcard,countif,Excel,Vba,Wildcard,Countif,我想知道我是否可以使用通配符作为日期 我将日期和时间存储在A1:A5上,我想数一数有多少项 根据标准“8/12/2015”,无论何时,输出compl应为2,因为A1和A4包含日期“8/12/2015” A1=2015年12月8日上午12:00 Sub counter() With Sheet1 Dim compl As String Dim xdate As String, xdate2 As St
根据标准“8/12/2015”,无论何时,输出compl应为2,因为A1和A4包含日期“8/12/2015” A1=2015年12月8日上午12:00
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
A2=2015年8月25日下午3:00
A3=2015年8月23日上午4:00
A4=8/12/2015凌晨1:30
A5=2015年8月20日上午12:00
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
在Excel中,日期自1970年1月1日起存储为数字。这意味着你写的日期是42239。
当2位小数为小时时。sou当此数字将包括特定日期中的所有单元格时,您可以使用函数
round
(0位)。如果不必使用VBA和countif(我不知道目标是什么):
=sumproduct((下限值(A1:A5),1)=日期(2015,8,20))*1)
除此之外,还有循环等选项,但如果没有目的,就很难指出正确的方向确保日期是日期,而不是字符串 确保使用ISO标准格式,而不是一些随机的日期顺序
Dim xdate As date
xdate = "2015-08-12"
compl = WorksheetFunction.CountIfs(Range("a1:a5"), ">=" & xdate, _
Range("a1:a5"), "<" & (xdate + 1))
Dim xdate作为日期
xdate=“2015-08-12”
compl=WorksheetFunction.CountIfs(范围(“a1:a5”),“>=”和xdate_
范围(“a1:a5”)、“=2015-08-28”、a1:a5“=”和格式(xdate,“yyyy-mm-dd”)_
范围(“a1:a5”),“感谢@Balinti的回复,我尝试了这个过程,但当我将日期转换为数字时,时间将有一个十进制等价物。是否有任何代码可以通过通配符对数字进行比较以忽略小数位数?例如,a1包含42239.97以下代码不起作用:x=42239 xdate2=42239&”*compl=WorksheetFunction.CountIfs(范围(“a1:a5”),xdate2)您可以将格式与格式(日期,“MM\u DD\u YYYY”)一起使用此外,我似乎不明白我将在哪里使用格式语法,对不起,请您详细说明一下好吗?好的,我总是忘记,我在一家拥有上千年技术的公司工作。我使用vba是因为我从MS Access DB表中提取了数千条记录,该表包含人员姓名、任务、任务状态(例如,已完成、正在进行、已取消)、已完成/已取消日期为我的报告,该报告显示在指定日期或周或月,以个人名义完成/取消/正在进行的任务数量。好的。Vacips答案应为适当的方式。如果可能,我会在SQL中计算所有需要的数据,或者在填充时(在一个周期内)使用字段值和VBA函数。非常感谢!对不起,我对excel VBA非常陌生,
WorksheetFunction.CountIfs(Range("a1:a5"), ">=" & Format(xdate, "yyyy-mm-dd"), _
Range("a1:a5"), "<" & Format(xdate + 1, "yyyy-mm-dd"))