【问题标题】:How to merge rows with blank cells into previous rows?如何将带有空白单元格的行合并到前一行?
【发布时间】:2013-12-04 06:32:18
【问题描述】:

我想编写一个脚本,将带有空白单元格的行合并到前一行中。

示例 1

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

示例 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

【问题讨论】:

  • 你的代码现在有什么问题?

标签: excel vba


【解决方案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

【讨论】:

    猜你喜欢
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多