免费下载

如何批量删除Excel中多个空表,推荐实用的三种方法!

不管是整理他人分享的表格、合并多份文件,还是清理模板残留、删除误操作创建的空表,手动逐张删除不仅效率低下,还容易遗漏,有的时候一些表格中包含的内容很少,如果手动删除还很容易被误删。为了解决这个低效和容易出错的情况,我们今天这篇文章就重点来讨论这个问题,并分享了三种删除空表的方法,非常适合经常处理Excel的朋友。

Excel中的空白表会占用存储空间、影响表格整洁度,尤其是空白表数量多时,严重拖慢办公进度,甚至影响后续数据筛选和统计工作。当我们需要删除这些无用的空白表时,手动一个个找到空白表本身就比较麻烦,考验眼力,还要一个个手动来删除,就更加低效。今天就来分享快速删除Excel空表的三种方法,总有一种方法适合你。

删除Excel空白表效果预览

处理前:

删除excel空白表处理前预览

处理后:

删除excel空白表处理后预览

方法一:借助【鹰迅批量处理工具箱】处理

优势:可以同时批量删除多个Excel文件中的空表,不需要一个个打开文件,还可以同时删除空白行列等,功能齐全。

不足:需要额外下载电脑端软件。

操作步骤:

1、打开「鹰迅批量处理工具箱」,左侧选择「Excel工具」,右侧在文件内容分类中选择删除 Excel 空白内容」的功能。

方法一:删除excel空白表功能选择

2、添加需要删除空白表的Excel 文档。

可以是单个也可以是多个文档,支持多种不同格式的Excel文件。

方法一:删除excel空白表添加处理文件

3、设置删除空白表的选项。

方法一:删除excel空白表设置删除选项

在这里,我们既可以删除空白表格,也可以同时删除 Excel 文档的空白行、空白列,打开选项就好了,非常简单。

4、批量删除空白表处理完成。

方法一:删除excel空白表处理完成

方法二:借助方方格子第三方插件处理

优势:单个文件处理功能强大,可以直接在Excel中使用。

不足:需要下载插件,只能处理单个Excel文件。

操作步骤:

1、下载方方格子插件,打开一个Excel文件。

2、点击方方格子插件 ,在功能区找到 工作表 分组 → 点击 删除指定表

方法二:找到删除制定工作表功能

3、在弹出的「删除指定工作表」对话框中:勾选 删除空白表

方法二:删除空白表

方法三:用VBA代码实现

优势:不需要额外下载软件,可以同时处理多个文件。

不足:有一定专业基础要求。

操作步骤:

1、准备工作

备份好Excel文件,将Excel文件另存为.xlsm格式,启用宏。

2. 设置代码

2. 运行代码


完成代码如下:

' 主程序:批量删除指定文件夹中所有Excel文件的空白工作表
Sub BatchDeleteEmptySheetsInFolder()
    Dim fso As Object
    Dim folderPath As String
    Dim mainFolder As Object
    Dim file As Object
    Dim wb As Workbook
    Dim fileCount As Integer
    Dim deletedCount As Integer
    
    ' 设置要处理的文件夹路径(请修改为你的实际路径)
    folderPath = "C:\YourFolderPath\"  ' 修改为你的文件夹路径
    
    ' 创建FileSystemObject
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' 检查文件夹是否存在
    If Not fso.FolderExists(folderPath) Then
        MsgBox "文件夹不存在: " & folderPath, vbExclamation
        Exit Sub
    End If
    
    ' 获取文件夹对象
    Set mainFolder = fso.GetFolder(folderPath)
    
    fileCount = 0
    deletedCount = 0
    
    ' 遍历文件夹中的所有文件
    For Each file In mainFolder.Files
        ' 检查是否为Excel文件
        If LCase(fso.GetExtensionName(file.Name)) = "xlsx" Or _
           LCase(fso.GetExtensionName(file.Name)) = "xls" Or _
           LCase(fso.GetExtensionName(file.Name)) = "xlsm" Then
           
            fileCount = fileCount + 1
            
            ' 打开Excel文件
            Set wb = Workbooks.Open(file.Path)
            
            ' 删除当前工作簿中的空白工作表
            If DeleteEmptySheetsInWorkbook(wb) Then
                deletedCount = deletedCount + 1
            End If
            
            ' 保存并关闭工作簿
            wb.Save
            wb.Close
            
            Set wb = Nothing
        End If
    Next file
    
    ' 清理对象
    Set fso = Nothing
    Set mainFolder = Nothing
    
    ' 显示处理结果
    MsgBox "处理完成!" & vbCrLf & _
           "共扫描 " & fileCount & " 个Excel文件" & vbCrLf & _
           "成功处理 " & deletedCount & " 个文件", vbInformation
End Sub

' 子程序:删除单个工作簿中的空白工作表
Function DeleteEmptySheetsInWorkbook(wb As Workbook) As Boolean
    Dim ws As Worksheet
    Dim deletedSheets As Integer
    Dim originalCount As Integer
    
    On Error GoTo ErrorHandler
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    originalCount = wb.Worksheets.Count
    deletedSheets = 0
    
    ' 从后向前遍历,避免删除时索引变化问题
    For i = wb.Worksheets.Count To 1 Step -1
        Set ws = wb.Worksheets(i)
        
        ' 检查工作表是否空白
        If IsEmptySheet(ws) Then
            ' 确保不会删除最后一个工作表
            If wb.Worksheets.Count > 1 Then
                ws.Delete
                deletedSheets = deletedSheets + 1
            Else
                ' 如果是最后一个工作表且为空白,重命名而不是删除
                ws.Name = "Sheet1"
            End If
        End If
    Next i
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    
    DeleteEmptySheetsInWorkbook = (deletedSheets > 0)
    Exit Function
    
ErrorHandler:
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    DeleteEmptySheetsInWorkbook = False
    MsgBox "处理文件时出错: " & wb.Name & vbCrLf & _
           "错误描述: " & Err.Description, vbExclamation
End Function

' 函数:判断工作表是否空白
Function IsEmptySheet(ws As Worksheet) As Boolean
    ' 方法1:检查UsedRange是否为空
    If ws.UsedRange.Address = "$A$1" And ws.Range("A1").Value = "" Then
        IsEmptySheet = True
        Exit Function
    End If
    
    ' 方法2:使用CountA函数检查所有单元格
    If Application.WorksheetFunction.CountA(ws.Cells) = 0 Then
        IsEmptySheet = True
        Exit Function
    End If
    
    ' 方法3:检查是否有任何数据
    If ws.UsedRange.Cells.Count = 1 And IsEmpty(ws.UsedRange) Then
        IsEmptySheet = True
        Exit Function
    End If
    
    IsEmptySheet = False
End Function

正文到此结束