我期待删除空白行,但留下两个空白行。这是我到目前为止的代码:删除所有空白行,但留下两个空行
Sheets("XYZ").Select
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Do Until blanks.Columns.Count = 2
Loop
End Sub
我期待删除空白行,但留下两个空白行。这是我到目前为止的代码:删除所有空白行,但留下两个空行
Sheets("XYZ").Select
Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Do Until blanks.Columns.Count = 2
Loop
End Sub
我觉得有可能是更好的方式来做到这一点,但在针对您的问题试试这个。
改变我因此,3 = 2blanks离开
Dim blankRows As Integer
Dim i As Integer
With Sheets("Sheet1").UsedRange
blankRows = .Columns(1).SpecialCells(xlCellTypeBlanks).Count
For i = 3 To blankRows
Columns(1).Cells.SpecialCells(xlCellTypeBlanks)(1).EntireRow.Delete
Next i
End With
你测试了你的解决方案吗? 'SpecialCells(xlCellTypeBlanks)(n)'应该从firts空白返回第n个连续的单元格。哪个不是OP想要的 – user3598756
你的意思是第一个空白会保持不变? –
对不起,我没有注意到'SpecialCells(xlCellTypeBlanks)(1)'中有一个不变的'1'索引,而不是变量'i'。所以它实际上总是捕获第一个_left_空白单元格。只有一个问题:使用'.Columns(1).SpecialCells(xlCellTypeBlanks)'返回使用范围的第一列中的所有空白单元格(其可能从不同于列“A”的列开始)到最后一行使用范围本身。这可能不是OP想要的。使用'.Range(“A1”,.Cells(.Rows.Count,1).End(xlUp))'替换'.Columns(1)'将会捕获仅“第一个”使用列的空白单元 – user3598756
你可以试试这个:
Sub main()
Dim lastCell As Range
Dim blanksCount As Long
Dim iarea As Long, icell As Long
With Worksheets("XYZ")
With .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)).SpecialCells(xlCellTypeBlanks)
For iarea = .Areas.Count To 1 Step -1
For icell = .Areas(iarea).Count To 1 Step -1
blanksCount = blanksCount + 1
If blanksCount = 2 Then
Set lastCell = .Areas(iarea).Cells(icell).Offset(-1)
Exit For
End If
Next
If Not lastCell Is Nothing Then Exit For
Next
End With
.Range("A1", lastCell).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub
你为什么不直接删除所有的空行,但随后在末尾插入2? – PartyHatPanda