组合一列中存在重复值的行

MJ9*_*J95 0 excel vba excel-vba

我需要帮助动态地将行与VBA结合在Excel中,其中值有时在一列中相同.

样本数据

A B C   D   E
1 r 10  5   3
1 r 12  8   2
2 q 60  50  40
2 q 25  45  55
2 q 100 200 300
Run Code Online (Sandbox Code Playgroud)

编辑:我的示例数据中的错误,将A中的最后一个值从3更改为2.

理想情况下,我会将列中下面值相同的行组合在一起B,同时将C&D中的值组合在一起,用分号分隔并对E列中的值求和.

当有一个重复但没有变化的重复数量时(动态组合),它可以工作

这基本上是我尝试过的:

Dim i As Long
i = 2

For i = 2 to lastRow
    If Cells(i, 2).Value = Cells(i + 1, 2).Value Then
        Cells(i, 3).Value = Cells(i, 3).Value & ";" & Cells(i + 1, 3).Value
        Cells(i, 4).Value = Cells(i, 4).Value + Cells(i + 1, 4).Value
        Rows(i + 1).Delete
    Else
        i = i + 1
    End If
Loop    
Run Code Online (Sandbox Code Playgroud)

Gar*_*ent 5

我们可以倒退.之前:

在此输入图像描述

子:

Sub dural()
    Dim i As Long
    lastRow = 5

    For i = lastRow To 2 Step -1
        If Cells(i, 2).Value = Cells(i - 1, 2).Value Then
            Cells(i - 1, 3).Value = Cells(i - 1, 3).Value & ";" & Cells(i, 3).Value
            Cells(i - 1, 4).Value = Cells(i - 1, 4).Value + Cells(i, 4).Value
            Rows(i).Delete
        End If
    Next i
End Sub
Run Code Online (Sandbox Code Playgroud)

之后:

在此输入图像描述