满足特定条件时删除工作表

Deleting worksheet(s) when certain conditions are met

我有一个文件 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

您当前的代码仅删除满足以下两个条件的工作表:(1) 年份低于 2020 且 (2) 月份低于 9。无论哪一年,这种组合都允许整个 9 月至 12 月过去。

你应该更换

If sh.Range("D1").End(xlDown) < 2020 And sh.Range("E1").End(xlDown) < 9 Then  

类似

If sh.Range("D1").End(xlDown) < 2020 _
   Or (sh.Range("D1").End(xlDown) = 2020 And sh.Range("E1").End(xlDown) < 9) Then