Excel 满足某些条件时删除工作表

Excel 满足某些条件时删除工作表,excel,vba,if-statement,time-series,worksheet,Excel,Vba,If Statement,Time Series,Worksheet,我有一个文件a.xlsx,其中包含具有多个工作表的时间序列数据。D列表示年份,E列表示月份。年和月都是数字。我编写了一个代码来删除所有在2020.9(9月)之前有数据的工作表。但是,结果中也包含一些在此时间点之前有数据的工作表。对于如何改进代码有什么建议吗 Sub Remove_worksheets() Dim A As workbook: Set A = Workbooks("A.xlsx") Dim sh As Worksheet Application.ScreenU

我有一个文件a.xlsx,其中包含具有多个工作表的时间序列数据。D列表示年份,E列表示月份。年和月都是数字。我编写了一个代码来删除所有在2020.9(9月)之前有数据的工作表。但是,结果中也包含一些在此时间点之前有数据的工作表。对于如何改进代码有什么建议吗

Sub Remove_worksheets()
Dim A As workbook: Set A = Workbooks("A.xlsx")
Dim sh As Worksheet

Application.ScreenUpdating = False
Application.DisplayAlerts = False

For Each sh In A.Worksheets
    If sh.Range("D1").End(xlDown) < 2020 And sh.Range("E1").End(xlDown) < 9 Then
      sh.Delete
    End If
Next sh

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub
Sub-Remove_工作表()
将A设置为工作簿:设置A=工作簿(“A.xlsx”)
将sh设置为工作表
Application.ScreenUpdating=False
Application.DisplayAlerts=False
对于A.工作表中的每个sh
如果sh范围(“D1”)结束(xlDown)<2020,且sh范围(“E1”)结束(xlDown)<9,则
sh.删除
如果结束
下一个sh
Application.ScreenUpdating=True
Application.DisplayAlerts=True
端接头

当前代码仅删除满足以下两个条件的工作表:(1)年份低于2020年,(2)月份低于9年。这样的组合使得无论是哪一年,9月至12月都可以顺利度过

你应该替换

If sh.Range("D1").End(xlDown) < 2020 And sh.Range("E1").End(xlDown) < 9 Then  
如果sh.Range(“D1”).End(xlDown)<2020且sh.Range(“E1”).End(xlDown)<9,则
有点像

If sh.Range("D1").End(xlDown) < 2020 _
   Or (sh.Range("D1").End(xlDown) = 2020 And sh.Range("E1").End(xlDown) < 9) Then
如果sh.Range(“D1”).End(xlDown)<2020_
或(sh范围(“D1”).End(xlDown)=2020和sh范围(“E1”).End(xlDown)<9)然后

谢谢ZygD,我只是想知道为什么我们有一个“或”连接两个条件。对我来说,“或”之前的条件是“或”之后条件的子集,“第一个条件不关心月份,它只删除2019年及以下的年份”。第二个条件仅涉及2020年。如果遇到这样的年份,那么代码需要查看月份级别。感谢您的解释,我现在就明白了。代码是有效的。