您实际上并不需要宏(但我在底部提供了一个)
[请注意,这是适用于 Windows 上 Excel 的有效解决方案 - 我没有使用 Excel for Mac 的经验,因此不能保证以下任一或两种解决方案都适用于您]
手动解决方案
- 选择 A、C、D 和 E 列(确保您首先选择 A 列)
- 按 F5 .... 转到 Special 并选择 Blanks,然后点击“ok”
- 在公式栏中,键入 =A1,其中 A1 是步骤 2 中第一个空白单元格正上方的单元格(见下图,此单元格是 A1)
- 同时按下Ctrl和Enter键。您现在在子行中有正确的数据
- 选择列 A:E 并复制然后选择性粘贴作为值将您刚刚在子行中输入的公式转换为值
- 选择 B 列
- 按 F5 .... Goto Special 并选择 Blanks 然后点击“ok”(见下图)
- 删除选中的行
代码解决方案
Sub Delete()
Dim rng1 As Range
Dim rng2 As Range
On Error Resume Next
Set rng1 = Range("A:A,C:E").SpecialCells(xlBlanks)
On Error GoTo 0
If rng1 Is Nothing Then Exit Sub
rng1.Formula = "=R[-1]C"
'handles two row areas else SpecialCells will force both areas to area1 formulae
For Each rng2 In rng1.Areas
rng2.Value = rng2.Value
Next rng2
On Error Resume Next
Set rng1 = Range("B:B").SpecialCells(xlBlanks)
On Error GoTo 0
If Not rng1 Is Nothing Then rng1.EntireRow.Delete
End Sub