我们使用一款在 Excel 中生成财务概览的应用程序。(目前使用 Excel 2010。)由于该应用程序中的某些配置,有时会在 Excel 中的值之间生成 4 或 5 个空行,而我们只需要一个空行。我无法使用宏,因为这些多余的行每次都不在同一位置。
我想删除那些多余的空白行,但我不想全部删除。单个空白行就可以了,而且非常需要。有没有公式可以帮助我删除多余的空白行,减去应该存在的一个空白行?
希望你们能帮助我。
答案1
对于第一个标准,您可以使用工作表函数计算每行中有多少个单元格具有值CountA()
。
代码片段:
If .CountA(ws.rows(r)) = 0
然后,如果连续有多个空行,您只想删除该行,因此我们将其添加到我们的If...Then
语句中。这将使用以下内容检查上面的行r - 1
:
... And .CountA(ws.Rows(r - 1)) = 0
这将检查上面的行是否为空;只有当它是空的时候,它才会将您的行添加到一个特殊范围,以跟踪您的行删除:delRng
。
以下是完整的 VBA 代码:
Sub removeEmptySpaces()
Dim r As Long, ws As Worksheet, delRng As Range
Set ws = ThisWorkbook.Worksheets(1)
With Application.WorksheetFunction
For r = 2 To lastRow(ws)
If .CountA(ws.Rows(r)) = 0 And .CountA(ws.Rows(r - 1)) = 0 Then
If delRng Is Nothing Then
Set delRng = ws.Rows(r)
Else
Set delRng = Union(ws.Rows(r), delRng)
End If
End If
Next
End With
If Not delRng Is Nothing Then delRng.Delete
End Sub
Function lastRow(ws As Worksheet, Optional col As Variant = 1) As Long
With ws
lastRow = .Cells(.Rows.Count, col).End(xlUp).Row
End With
End Function