Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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自动筛选不';t使用VBA代码处理带有日期和时间的列_Vba_Datetime_Excel_Autofilter - Fatal编程技术网

Excel自动筛选不';t使用VBA代码处理带有日期和时间的列

Excel自动筛选不';t使用VBA代码处理带有日期和时间的列,vba,datetime,excel,autofilter,Vba,Datetime,Excel,Autofilter,在MS Excel上使用VBA同时筛选日期和时间值时遇到问题。当我只需要筛选日期时,我发现使用以下代码没有问题: myRange.AutoFilter Field:=3, Criteria1:= _ ">=" & CDbl(CDate((Date - 2))), Operator:=xlAnd, Criteria2:="<=" & CDbl(CDate((Date))) myRange.AutoFilter字段:=3,标准1=_ “>=”&CDbl(CDat

在MS Excel上使用VBA同时筛选日期和时间值时遇到问题。当我只需要筛选日期时,我发现使用以下代码没有问题:

myRange.AutoFilter Field:=3, Criteria1:= _
    ">=" & CDbl(CDate((Date - 2))), Operator:=xlAnd, Criteria2:="<=" & CDbl(CDate((Date)))
myRange.AutoFilter字段:=3,标准1=_
“>=”&CDbl(CDate((Date-2))),运算符:=xlAnd,准则2:=”考虑:

Sub DateTimeMaker()
    Dim d1 As Date, d2 As Date, MyRange As Range
    Dim crt1 As Double, crt2 As Double
    d1 = DateValue("6/24/2014") + TimeValue("19:00")
    d2 = DateValue("6/25/2014") + TimeValue("8:00")
    crt1 = CDbl(d1)
    crt2 = CDbl(d2)
    Set MyRange = Range("A1:C10")
    MyRange.AutoFilter Field:=3, Criteria1:=">=" & crt1, Operator:=xlAnd, Criteria2:="<=" & crt2
End Sub
子日期计时器()
尺寸d1作为日期,d2作为日期,MyRange作为范围
尺寸crt1为双精度,crt2为双精度
d1=日期值(“2014年6月24日”)+时间值(“19:00”)
d2=日期值(“2014年6月25日”)+时间值(“8:00”)
crt1=CDbl(d1)
crt2=CDbl(d2)
设置MyRange=Range(“A1:C10”)
MyRange.AutoFilter字段:=3,准则1:=“>=”&crt1,运算符:=xlAnd,准则2:=“=”&crt1,运算符:=xlAnd,准则2:=”我找到了一种方法:

Sub DateTimeFilter()

    Dim d1, d2, m1, m2, y1, y2 As Integer

    Dim dt1, dt2 As String

    d1 = Day(Date - 1)
    d2 = Day(Date)
    m1 = Month(Date - 1)
    m2 = Month(Date)
    y1 = Year(Date - 1)
    y2 = Year(Date)

    dt1 = m1 & "/" & d1 & "/" & y1
    dt2 = m2 & "/" & d2 & "/" & y2

    ActiveSheet.Range("$A$3:$L$2012").AutoFilter Field:=3, Criteria1:= _
        ">=" & dt1 & " 19:00", Operator:=xlAnd, Criteria2:="<=" & dt2 & " 08:00"

End Sub
Sub-DateTimeFilter()
尺寸d1、d2、m1、m2、y1、y2为整数
尺寸dt1、dt2为字符串
d1=天(日期-1)
d2=天(日期)
m1=月份(日期-1)
m2=月(日)
y1=年份(日期-1)
y2=年份(日期)
dt1=m1&“/”&d1&“/”&y1
dt2=m2&“/”&d2&“/”&y2
ActiveSheet.Range(“$A$3:$L$2012”)。自动筛选字段:=3,标准1:=_

“>=”&dt1&“19:00”,运算符:=xlAnd,准则2:=“您可以添加TimeSerial()或TimeValue()函数到日期。感谢您的提示,@Gary,但我不使用静态日期。我始终需要使用从昨天19:00到今天8:00的日期范围。哪种语法适用于这种情况?它仍然不起作用。我不知道它是否从Excel版本更改为其他版本,但我使用的是MS Excel 2010。您的症状是什么?我的数据在A列到C列中,实际日期/时间在C列中…………确保C列包含实际值而不是文本。单元格的格式应为“dd/mm/yyyy hh:mm”。但即使将格式更改为“real date/time”“没用。我不知道这些信息是否有用,但我的桌面日期/时间配置是巴西标准的,因此我使用“dd/mm/yyyy hh:mm”而不是“mm/dd/yyyy hh:mm”。
Sub DateTimeFilter()

    Dim d1, d2, m1, m2, y1, y2 As Integer

    Dim dt1, dt2 As String

    d1 = Day(Date - 1)
    d2 = Day(Date)
    m1 = Month(Date - 1)
    m2 = Month(Date)
    y1 = Year(Date - 1)
    y2 = Year(Date)

    dt1 = m1 & "/" & d1 & "/" & y1
    dt2 = m2 & "/" & d2 & "/" & y2

    ActiveSheet.Range("$A$3:$L$2012").AutoFilter Field:=3, Criteria1:= _
        ">=" & dt1 & " 19:00", Operator:=xlAnd, Criteria2:="<=" & dt2 & " 08:00"

End Sub