Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带通配符条件的Excel VBA Countifs-用于日期_Excel_Vba_Wildcard_Countif - Fatal编程技术网

带通配符条件的Excel VBA Countifs-用于日期

带通配符条件的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

我想知道我是否可以使用通配符作为日期

我将日期和时间存储在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 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"))