ARTICLE · 1258020
Excel-VBA自动化一键清理,复制出来一堆空行空列?智能化处理连带隐藏行列一起删掉
Excel-VBA自动化一键清理,复制出来一堆空行空列?智能化处理连带隐藏行列一起删掉平时粘贴网页数据、导出系统报表、多表合并之后,最头疼的就是莫名其妙的空行、空列。 肉眼看着不多,往下翻几十上百条,手动一行一行删,费时还容易删错有效内容。 还有一种更坑的:别人文件里藏了大量隐藏行、隐藏列,透视、匹配的时候时不时出异常,找起来特别麻烦。 今天这段数组+范围判断的VBA,专门解决这个场景。 分两个可选功能:清理空白行列、清理隐藏行列,按需开启,不瞎删有内容的数据。 功能说明 ✅ 删除完全空白行(整行没有任何内容才删,有一个单元格有内容就保留) ✅ 删除完全空白列(整列无内容删除) ✅ 可选一键删除工作表里所有隐藏行、隐藏列 ✅ 代码做了判断保护,不会误删带数据的区域 ✅ 关闭屏幕刷新,几千上万行执行起来不卡顿 ✅ 保留表头,原有数据顺序不变 提醒:删除操作不可逆,运行前建议先保存文件,重要表格另存一份副本。 完整VBA代码 vba Sub 一键清理空行空列_删除隐藏行列() Dim ws As Worksheet Dim delBlankRow As Boolean Dim delBlankCol As Boolean Dim delHideRow As Boolean Dim delHideCol As Boolean '====================参数区,按需开关 True开启 False关闭==================== delBlankRow = True '删除空白行 delBlankCol = True '删除空白列 delHideRow = False '删除隐藏行,不需要改成False delHideCol = False '删除隐藏列,不需要改成False '========================================================================== Set ws = ActiveSheet Application.ScreenUpdating = False Application.DisplayAlerts = False '删除隐藏行,从下往上删,防止行号错乱 If delHideRow Then Dim r As Long For r = ws.UsedRange.Rows.Count To 1 Step -1 If ws.Rows(r).Hidden Then ws.Rows(r).Delete End If Next r End If '删除隐藏列,从右往左删 If delHideCol Then Dim c As Long For c = ws.UsedRange.Columns.Count To 1 Step -1 If ws.Columns(c).Hidden Then ws.Columns(c).Delete End If Next c End If '删除空白行,从下往上遍历 If delBlankRow Then Dim lastR As Long lastR = ws.UsedRange.Rows.Count For r = lastR To 1 Step -1 If WorksheetFunction.CountA(ws.Rows(r)) = 0 Then ws.Rows(r).Delete End If Next r End If '删除空白列,从右往左遍历 If delBlankCol Then Dim lastC As Long lastC = ws.UsedRange.Columns.Count For c = lastC To 1 Step -1 If WorksheetFunction.CountA(ws.Columns(c)) = 0 Then ws.Columns(c).Delete End If Next c End If Application.ScreenUpdating = True Application.DisplayAlerts = True MsgBox "清理执行完成!", vbInformation End Sub 参数怎么改,简单说清楚 只改上面参数区4行,其余代码不用动 - 只删空行空列: delHideRow=False 、 delHideCol=False - 连带隐藏行列一起清理:全部改成 True - 只想清隐藏行,保留空白行列: delBlankRow=False 、 delBlankCol=False 重点:删除行列必须倒序循环(从底部、右侧往回删),正序删除会造成行号偏移、漏删,网上很多简单代码就是踩这个坑。 适用场景 1. 网页复制、文本粘贴后,夹杂大量隔行空白 2. 多文件合并之后,中间多出成片空行 3. 收到别人发来的表格,里面藏了隐藏辅助行列,影响后续统计 4. 台账整理前预处理,精简表格,减少冗余区域 温馨小提示 很多人清理完空行之后,紧接着就要做数据清洗了。这样依然还会有一些错误 搭配上一篇【一键数据清洗】一起用,一套流程下来:清理冗余行列 → 清洗字符空格日期 → 多条件去重,原始脏表直接整理成标准台账。 专业vba开发收藏分享不迷路 Excel-VBA数据太脏不用手改!一键全自动清洗:去空格、清乱码、统一日期、多条件去重 VBA数组版|跨文件多条件模糊查询回填(支持通配,十万行不卡) VBA递归遍历读取多层文件夹,一键合并所有Excel(普通vba做不到) VBA一键按条件自动提取数据(文员、生产统计专用) 别再只用RANK!Excel多条件排名,业绩产量排序直接套用















































































