【问题】
关于删除空行,以前是用函数来完成工作的,
今天有人提出问题,传来这个文件,
现有数据,1w多行,其中有部分列有不同合并单元格,跨行也不一样。如果要进行筛选删除空行,有一定的时间与难度。
函数可能不好做哦!
还是用VBA做一个吧,以后相同的工作也可复用,方便,
也可考虑整合到VSTO中。
【代码】
共享如下(含测试代码)
Sub yhd选择区域删除空行()
Dim SelRng As Range
Set SelRng = Selection
si = SelRng.row
ei = SelRng.rows.Count
Debug.Print si, ei
For i = si To si + ei
a = Excel.Application.WorksheetFunction.CountA(SelRng.rows(i))
Debug.Print "i=" & i & "a=" & a
Next
With Worksheets("选择区域删除空行")
Set SelRng = .Range("A1:L878")
si = SelRng.row
ei = SelRng.rows.Count
' Debug.Print si, ei
End With
End Sub
Sub DeleteEmptyRowsInSelection()
Dim rng As Range
Dim r As Long
' 检查选择区域是否为空
If Selection Is Nothing Then
MsgBox "没有选择区域", vbExclamation, "提示"
Exit Sub
End If
' 获取选择区域的所有行号
Dim rows As Variant
rows = Selection.rows
' 从最后一行开始向上遍历,避免索引问题
For r = UBound(rows) To LBound(rows) Step -1
' 检查整行是否有数据
If WorksheetFunction.CountA(Selection.rows(r)) = 0 Then
' 如果没有数据,删除该行
' Selection.rows(r).Delete
Debug.Print r
Selection.rows(r).Interior.ColorIndex = 20
End If
Next r
End Sub
代码中先用涂色,测试,如果要删除修改一下就可以啦
【运行】
我们可以先选择区域,再运行代码,
【成功】
如图
如果对你有帮助,转发给大家免费学习
关注,有更多文章学习