满足特定条件时删除工作表
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
我有一个文件 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