Excel:如何按指定条件批量删除工作表?

2025-12-02 05:48:17

1、1,先说一下如何无条件的支持删除工作表,也就是删除全部工作表(仅保留不得不保留的最后一张工作表)。

代码如下:

Sub DelShet() '删除所有工作表


    Dim sht As Worksheet
    Application.ScreenUpdating = False '关屏幕刷新
    Application.DisplayAlerts = False '关警告信息
    On Error Resume Next
    For Each sht In Worksheets
        sht.Delete '遍历工作表删除
    Next
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Excel:如何按指定条件批量删除工作表?

2、然后再说一下如何有条件的删除工作表。

如下图所示,一个工作簿内包含了多张工作表,需要按你的任意规则对其删除其中一部分。

Excel:如何按指定条件批量删除工作表?

3、 1使用以下代码,将全部工作表的名称提取到当前工作表的A列

Sub GetShtByVba()


    Dim sht As Worksheet, k As Long
    Application.ScreenUpdating = False
    k = 1
    Range("a:b").Clear '清空数据
    Range("a:a").NumberFormat = "@" '设置文本格式
    For Each sht In Worksheets '遍历工作表取表名
        k = k + 1
        Cells(k, 1) = sht.Name
    Next
    Range("a1:b1") = Array("工作表名", "是否删除")
    Application.ScreenUpdating = True
End Sub

Excel:如何按指定条件批量删除工作表?

4、结果如下图所示。

Excel:如何按指定条件批量删除工作表?

5、 2,对需要删除的工作表,使用函数等方法,在B列标记“删除”。

Excel:如何按指定条件批量删除工作表?

6、3,复制运行以下代码,即可完成对B列标记“删除”的文件批量删除。

Sub DelShtByVba()


    Dim sht As Worksheet, i As Long, r
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    On Error Resume Next
    r = Range("a1").CurrentRegion '数据装入数组r
    For i = 2 To UBound(r) '遍历并删除工作表
        If r(i, 2) = "删除" Then Worksheets(CStr(r(i, 1))).Delete
    Next
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Excel:如何按指定条件批量删除工作表?

7、代码三五行,工作不用忙断肠,你也试一下吧~如果你还不懂得如何运行VBA代码,可以参考:如何运行VBA代码


依次点击菜单【进阶教程】→【VBA常用代码】可以获取更多实用VBA小代码。

Excel:如何按指定条件批量删除工作表?

8、个人建议

代码会将隐藏的工作表也删除,但我们不可能将全部工作表删除,系统要求一个工作簿必须存在至少一张非隐藏的工作表。

Excel:如何按指定条件批量删除工作表?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢