除命名工作表外,在所有工作表上运行删除重复代码

我有下面的代码,从“ACHAL”工作表中删除行,其中在“存档”工作表的列M和列A之间find匹配。

我需要为所有工作表运行相同的脚本,但是,我的工作簿由多个工作表组成,其中工作表名称将频繁更改; 所以我不想将工作表名称添加到代码中。

在工作簿中,我有2个工作表,它们有一个固定的工作表名称(这些不会改变),代码需要在除“所有数据”和“存档”之外的所有工作表上运行。

是否有一种循环代码的方式,使其可以在除“所有数据”和“存档”之外的所有工作表上运行。 代码将在最后一个工作表上运行后停止。

Sub ArchiveMatch() Dim LR As Long, i As Long With Sheets("ACHAL") LR = .Range("M2:M" & Rows.Count).End(xlUp).Row For i = LR To 1 Step -1 If IsNumeric(Application.Match(.Range("A" & i).Value, Sheets("Archive").Columns("A"), 0)) Then .Rows(i).Delete Next i End With End Sub 

您可以遍历所有工作表,然后检查当前工作表是否不是所有数据或存档,如下所示:

 Sub ArchiveMatch() Dim LR As Long, i As Long Dim sh As Worksheet For Each sh In ThisWorkbook.Worksheets If sh.Name <> "All Data" And sh.Name <> "Archive" Then LR = sh.Range("M2:M" & Rows.Count).End(xlUp).Row For i = LR To 1 Step -1 If IsNumeric(Application.Match(sh.Range("A" & i).Value, Sheets("Archive").Columns("A"), 0)) Then sh.Rows(i).Delete Next i End If Next sh End Sub 

你可以循环所有的表单:

 Sub Main() Dim i As Integer For i = 1 To Sheets.Count Sheets(i).Activate Next End Sub 

如果您有一个或多个工作表的例外,请与此Sheets(i).Name进行比较

希望它的作品。