如何将行与空白单元格合并到以前的行?

时间:2013-12-04 06:32:18

标签: excel-vba vba excel

我想编写一个脚本,将行与空白单元格合并到上一行。

示例1

merge diagram

第2行在最后一列中有一个空白单元格。因此,它与行1合并。列A和B保持不变,C被覆盖,并且D被连接。第2行被删除。

示例2

merge diagram 2

第2行和第3行在最后一列中有空白单元格。因此,它们与行1合并。列A和B保持不变,C被覆盖,并且D被连接。第2行和第3行被删除。

如何使用VBA实现这一目标?

编辑:这是我迄今取得的成就。

Sub Merge()
    ActiveSheet.UsedRange.Activate
    ActiveCell.Offset(0, 4).Select
    Do While ActiveCell.Row <= ActiveSheet.UsedRange.Rows.Count
        Do While (IsEmpty(ActiveCell.Offset(1, 0).Value) And Not IsEmpty(ActiveCell.Offset(1, -4)))
            ActiveCell.Offset(0, -1).Value = ActiveCell.Offset(0, -1).Value + " " + ActiveCell.Offset(1, -1).Value
            ActiveCell.Offset(0, -2).Value = ActiveCell.Offset(1, -2).Value
            ActiveCell.Offset(1, 0).EntireRow.Delete shift:=xlShiftUp
        Loop
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub

1 个答案:

答案 0 :(得分:1)

试试这段代码:

Sub Merge()
Dim rng As Range
Set ws = Worksheets("Sheet2") 'Change your sheet name
Set rng = ws.Range("A1").CurrentRegion
With ws
    For i = rng.Rows.Count To 1 Step -1
        If .Cells(i, 5) = "" Then
            .Cells(i, 3).Offset(-1) = .Cells(i, 3)
            .Cells(i, 4).Offset(-1) = .Cells(i, 4).Offset(-1) & " " & .Cells(i, 4)
            .Rows(i).EntireRow.Delete
        End If
    Next
End With
End Sub