请求修正删除行内空白单元格的VBA宏代码
修正删除每行空白单元格并左移的VBA宏
原代码存在三个核心问题导致无操作:
- 错误固定取第1行的最后一列,而非当前循环行的有效列
- 目标范围只选中了第1行的单个单元格,未覆盖当前行的所有数据单元格
- 遍历所有行(含大量空行)效率极低,且正向遍历删除单元格会漏检
修正后的代码:
Sub RemoveBlankCells() Dim row As Long Dim lastCol As Long Dim col As Long Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("ABC") ' 只遍历有数据的行(从第1行到最后一行有数据的行) For row = 1 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' 获取当前行的最后一列 lastCol = ws.Cells(row, ws.Columns.Count).End(xlToLeft).Column ' 反向遍历列(从最后一列到第1列),避免删除单元格后漏检 For col = lastCol To 1 Step -1 If ws.Cells(row, col).Value = "" Then ws.Cells(row, col).Delete Shift:=xlToLeft End If Next col Next row End Sub
关键修改说明:
- 改用行号循环,仅遍历有数据的行,大幅提升效率
- 针对当前行
row获取最后一列lastCol,确保处理范围正确 - 反向遍历列(从后往前),避免删除空白单元格后,后续单元格左移导致的漏检问题
内容的提问来源于stack exchange,提问作者cdfj
相关产品推荐
相关产品推荐

