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自动筛选昨天日期(不包括周末)_Excel_Vba - Fatal编程技术网

Excel VBA自动筛选昨天日期(不包括周末)

Excel VBA自动筛选昨天日期(不包括周末),excel,vba,Excel,Vba,我有一批数据,在a列(日期,例如(20/7/2020))中。如果我想筛选昨天的此列(不包括Sat和Sun)。我该怎么办 With ActiveSheet.Range("$A$1:$A$21") .AutoFilter Field:=1, Criteria1:=2, _ Operator:=11, Criteria2:=0 End With 使用上述代码,我可以过滤昨天的日期,即2020年7月19日。由于昨天是周末,我希望它通过排除周末来过滤2020年

我有一批数据,在a列(日期,例如(20/7/2020))中。如果我想筛选昨天的此列(不包括Sat和Sun)。我该怎么办

With ActiveSheet.Range("$A$1:$A$21")
    .AutoFilter Field:=1, Criteria1:=2, _
        Operator:=11, Criteria2:=0
End With
使用上述代码,我可以过滤昨天的日期,即2020年7月19日。由于昨天是周末,我希望它通过排除周末来过滤2020年7月17日。如何修改代码以排除周末

谢谢。

请尝试以下代码:

Sub filterYesterdayWithoutWeekends()
  Dim sh As Worksheet, strCrit As String, lastRow As Long
  Set sh = ActiveSheet
  lastRow = sh.Range("A" & Rows.count).End(xlUp).Row
  strCrit = IIf(Not IsWeekend(Date - 1), CStr(Date - 1), _
      (IIf(Not IsWeekend(Date - 2), CStr(Date - 2), CStr(Date - 3))))
  
  With sh.Range("A1:A" & lastRow)
    .AutoFilter field:=1, Criteria1:=strCrit, Operator:=xlFilterValues
  End With
End Sub
以及确定周末的下一个函数:

Private Function IsWeekend(InputDate As Date) As Boolean
    Select Case Weekday(InputDate)
        Case vbSaturday, vbSunday
            IsWeekend = True
        Case Else
            IsWeekend = False
    End Select
End Function
请尝试此代码:

Sub filterYesterdayWithoutWeekends()
  Dim sh As Worksheet, strCrit As String, lastRow As Long
  Set sh = ActiveSheet
  lastRow = sh.Range("A" & Rows.count).End(xlUp).Row
  strCrit = IIf(Not IsWeekend(Date - 1), CStr(Date - 1), _
      (IIf(Not IsWeekend(Date - 2), CStr(Date - 2), CStr(Date - 3))))
  
  With sh.Range("A1:A" & lastRow)
    .AutoFilter field:=1, Criteria1:=strCrit, Operator:=xlFilterValues
  End With
End Sub
以及确定周末的下一个函数:

Private Function IsWeekend(InputDate As Date) As Boolean
    Select Case Weekday(InputDate)
        Case vbSaturday, vbSunday
            IsWeekend = True
        Case Else
            IsWeekend = False
    End Select
End Function