不管是整理他人分享的表格、合并多份文件,还是清理模板残留、删除误操作创建的空表,手动逐张删除不仅效率低下,还容易遗漏,有的时候一些表格中包含的内容很少,如果手动删除还很容易被误删。为了解决这个低效和容易出错的情况,我们今天这篇文章就重点来讨论这个问题,并分享了三种删除空表的方法,非常适合经常处理Excel的朋友。
Excel中的空白表会占用存储空间、影响表格整洁度,尤其是空白表数量多时,严重拖慢办公进度,甚至影响后续数据筛选和统计工作。当我们需要删除这些无用的空白表时,手动一个个找到空白表本身就比较麻烦,考验眼力,还要一个个手动来删除,就更加低效。今天就来分享快速删除Excel空表的三种方法,总有一种方法适合你。
删除Excel空白表效果预览
处理前:

处理后:

方法一:借助【鹰迅批量处理工具箱】处理
优势:可以同时批量删除多个Excel文件中的空表,不需要一个个打开文件,还可以同时删除空白行列等,功能齐全。
不足:需要额外下载电脑端软件。
操作步骤:
1、打开「鹰迅批量处理工具箱」,左侧选择「Excel工具」,右侧在文件内容分类中选择「删除 Excel 空白内容」的功能。

2、添加需要删除空白表的Excel 文档。
可以是单个也可以是多个文档,支持多种不同格式的Excel文件。

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

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

方法二:借助方方格子第三方插件处理
优势:单个文件处理功能强大,可以直接在Excel中使用。
不足:需要下载插件,只能处理单个Excel文件。
操作步骤:
1、下载方方格子插件,打开一个Excel文件。
2、点击方方格子插件 ,在功能区找到 工作表 分组 → 点击 删除指定表

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

方法三:用VBA代码实现
优势:不需要额外下载软件,可以同时处理多个文件。
不足:有一定专业基础要求。
操作步骤:
1、准备工作
备份好Excel文件,将Excel文件另存为.xlsm格式,启用宏。
2. 设置代码
打开Excel,按
Alt + F11进入VBA编辑器在左侧"工程资源管理器"中,右键点击你的工作簿名称
选择"插入" → "模块"
将下面完整代码复制到模块中
- 修改文件夹路径:找到代码中的
folderPath = "C:\YourFolderPath\",将其修改为你的实际文件夹路径
2. 运行代码
返回Excel界面,按
Alt + F8打开宏对话框选择
BatchDeleteEmptySheetsInFolder宏点击"运行"
完成代码如下:
' 主程序:批量删除指定文件夹中所有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