【发布时间】:2018-04-28 15:53:42
【问题描述】:
我有以下一段代码,它排除了 Excel 表中日期与今天 + 6 天不同的所有结果。 问题是,当我在周一执行该操作时,我遇到了周日。 我需要以某种方式对其进行更改,除非结果是星期六或星期日,否则它总是会在我当前的日期上增加 6 天,然后我想在此之后的第一个工作日,即星期一。
Public Sub GRP_SC_Filter1()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim DelDate As Long
DelDate = DateSerial(Year(Date), Month(Date), Day(Date) + 6)
LR = Sheets("Goods Receivable Planning").Range("A" & Rows.Count).End(xlUp).Row
Cells.AutoFilter Field:=13, Criteria1:="<>" & DelDate
ALR = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
If ALR > 2 Then
Range("A2:A" & LR).SpecialCells(xlCellTypeVisible).Select
Range("A2:A" & LR).Delete
Range("A1").Activate
End If
Cells.AutoFilter
' MsgBox "Finished deleting rows"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
如果有人能帮我把它变成我需要的东西,我会非常感激。老实说,我被困住了。先感谢您!
【问题讨论】:
-
您查看过
=NetworkDays()工作表功能吗?这将计算两个日期之间的工作日数,并可能帮助您实现所需。 -
如果你的周末是
Sat, Sun,你可以使用Excel函数WORKDAY。如果不是这样,请使用WORKDAY.INTL来定义周末。两者都可以在 VBA 中作为WorksheetFunction对象的成员使用。