一个看似简单的问题:
我在列A:E中有数据。 E列在某些行中有一些空白单元格。
我想删除包含E中空白单元格的所有行。但是,这是捕获,后续列中还有其他数据。如果我删除整行,这些数据也将被删除,这是我不想要的。
更具体地说,我需要: (1)检查E列是否有空白单元格 (2)如果找到空白单元格,则清除具有此单元格的行,但仅清除列A:E (3)将列A:E中的数据移位
我试过了:
Range("E2:E100").SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
但是这个只移动E列中的数据,而不是整行。
当然,我可以使用:
Range("E2:E100").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
但就像我说的那样,这将删除后续列中的数据,这是我不想要的。
任何提示?
谢谢,
的Al
答案 0 :(得分:2)
你不能移动整个并留下一些排,这是一个矛盾。听起来你想要这样做:
Range("A" & row & ":E" & row).Delete Shift:=xlUp
其中row是您要删除的行号
答案 1 :(得分:0)
要删除“块”中的A:E,但保留其他列完好无损的完整解决方案是
Sub PartKill2()
Dim rng1 As Range
Dim rng2 As Range
ActiveSheet.UsedRange
On Error Resume Next
Set rng1 = Columns("E").SpecialCells(xlBlanks)
On Error GoTo 0
If rng1 Is Nothing Then Exit Sub
For Each rng2 In rng1.Areas
rng2.Cells(1).Offset(0, -4).Resize(rng2.Rows.Count, 5).Delete xlUp
Next
End Sub
如果你想删除E为空白的整行,而F:End列是空白的(但是按原样保留该行),则可以使用这个更复杂的版本
Sub PartKill1()
Dim rng1 As Range
Dim lngCell As Long
Dim lngArea As Long
ActiveSheet.UsedRange
On Error Resume Next
Set rng1 = Columns("E").SpecialCells(xlBlanks)
On Error GoTo 0
If rng1 Is Nothing Then Exit Sub
For lngArea = rng1.Areas.Count To 1 Step -1
For lngCell = rng1.Areas(lngArea).Cells.Count To 1 Step -1
If Application.CountA(Range(rng1.Areas(lngArea).Cells(lngCell).Offset(0, 1), Cells(rng1.Areas(lngArea).Cells(lngCell).Row, Columns.Count))) = 0 Then
rng1.Areas(lngArea).Cells(lngCell).EntireRow.Delete
End If
Next
Next
End Sub