Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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 如何使用日期筛选数据_Excel_Vba - Fatal编程技术网

Excel 如何使用日期筛选数据

Excel 如何使用日期筛选数据,excel,vba,Excel,Vba,我试图根据输入框中输入的季度过滤掉日期,但它一直抛出一个错误。我对vba有点陌生,还在学习。任何帮助都将不胜感激。谢谢 这就是我到目前为止所想到的 ResponseYr = SdrYear ResponseQtr = SdrQtr If ResponseQtr = 1 Then BeginDate = "1 / 1 /" & ResponseYr & "0:00" BeginDate = DateSerial(ResponseYr, 1, 1) EndDate = "31 /

我试图根据输入框中输入的季度过滤掉日期,但它一直抛出一个错误。我对vba有点陌生,还在学习。任何帮助都将不胜感激。谢谢 这就是我到目前为止所想到的

ResponseYr = SdrYear
ResponseQtr = SdrQtr

If ResponseQtr = 1 Then
BeginDate = "1 / 1 /" & ResponseYr & "0:00"
BeginDate = DateSerial(ResponseYr, 1, 1)
EndDate = "31 / 3 /" & ResponseYr & "0:00"
EndDate = DateSerial(ResponseYr, 3, 31)
'Quarter1 = Range("BeginDate:EndDate")


ElseIf ResponseQtr = 2 Then
BeginDate = "1 / 4 /" & ResponseYr & "0:00"
BeginDate = DateSerial(ResponseYr, 4, 1)
EndDate = "30 / 6 /" & ResponseYr & "0:00"
EndDate = DateSerial(ResponseYr, 6, 30)
'Quarter2 = Range("BeginDate:EndDate")

ElseIf ResponseQtr = 3 Then
BeginDate = "1 / 7 /" & ResponseYr & "0:00"
BeginDate = DateSerial(ResponseYr, 7, 1)
EndDate = "30 / 9 /" & ResponseYr & "0:00"
EndDate = DateSerial(ResponseYr, 9, 30)
'Quarter3 = Range("BeginDate:EndDate")

ElseIf ResponseQtr = 4 Then
BeginDate = "1/10/" & ResponseYr & "0:00"
BeginDate = DateSerial(ResponseYr, 10, 1)
EndDate = "31 / 12 /" & ResponseYr & "0:00"
EndDate = DateSerial(ResponseYr, 12, 31)
'Quarter4 = Range("BeginDate:EndDate")
End If
With ActiveSheet.Range("A:AD")
'.AutoFilterMode = False
.AutoFilter Field:=15, Criteria1:=Array("Accept", "Alteration Change Commencement Date", "Alteration 
Reinstatement", "Alteration Manual", "Term Expire", "Claim Repudiated", "Claim Payment Done"), 
Operator:=xlFilterValues
.AutoFilter Field:=13, Criteria1:=">=BeginDate", Operator:=xlAnd, Criteria2:="<=EndDate"
 End With

要完整地回答您的问题,了解错误发生的位置会很有帮助。要筛选所需日期,必须将字符串和变量分开:

.AutoFilter Field:=13, Criteria1:=">=" & BeginDate, Operator:=xlAnd,  Criteria2:="<=" & EndDate
但在excel vba中过滤日期可能很棘手。您可能还需要将日期转换为数字:

 .AutoFilter Field:=13, Criteria1:=">=" & CDbl(CDate(BeginDate)), Operator:=xlAnd,  Criteria2:="<=" & CDbl(CDate(EndDate))

哪一行抛出错误,错误消息是什么?很好。变量不应该在引号内,是的。假设我输入了第2季度,我在这行代码BeginDate=1/4/&ResponseYr&0:00上得到类型不匹配错误。数据中的日期附有时间。通常附加到它的时间是12:00:00 pm您是否声明了变量ResponseYr?例如:。那么如何检索变量SdrYear的内容呢?是的,我声明了。我使用了输入框的概念。如下所示:Dim SdrYear As Integer Dim SdrQtr As Integer Dim ResponseYr As Integer Dim ResponseEqtr As Integer SdrYear=InputBox哪一年?SdrQtr=InputBox哪个季度?好的,您是否将BeginDate和EndDate声明为日期?必须在ResponseYr和时间字符串1/4/&ResponseYr&0:00之间使用空格。或者,如果不需要,并且在本例中不只是删除timeString:1/4/&ResponseYr