一列重复值的相邻行之和

时间:2018-10-23 07:30:07

标签: excel vba excel-vba

我的数据在第一栏中有代码代码。基于此,我需要将所有值添加到其相邻行中,并将其放在“ E”和“ F”列中。我有下表。

Column E = Column C - Column D

如果为负值,则

Column F = Column C -Column D

数据:

XXX 10548   300000  0    0  0   
XXX 12798   25000   0    0  0   
XXX 90078   25000   2500 0  0   
YYY 10412   0       500  0  0   
YYY 10548   500     0    0  0   
ZZZ 10548   0       750  0  0   
ZZZ 10975   750     0    0  0   
ZZZ 12086   0       3000 0  0   

现在,我想根据重复值列A对列E和列F进行分组。 参见下表。

E列和F列的基本公式为sum("C2:C5") - Sum("D2:D5")

XXX 10548   300000  0     325000    -
XXX 12798   25000   0       
XXX 90078   25000   25000       
YYY 10412   0       500   -         -
YYY 10548   500     0       
ZZZ 10548   0       750   0         -3000
ZZZ 10975   750     0       
ZZZ 12086   0       3000    

我找到了一个代码,但是由于对Dictionary的了解不多,所以现在可以操作了。

Sub Test()
    Dim Rng As Range, Dn As Range, n As Long, nRng As Range
    Dim x As Double
    Set Rng = Range(Range("A2"), Range("A" & Rows.Count).End(xlUp))

    With CreateObject("scripting.dictionary")
        .CompareMode = vbTextCompare
        For Each Dn In Rng
            'Debug.Print Dn.Address
            'Debug.Print Dn.Value
            'Debug.Print Dn.Offset(, 2)
            'Debug.Print Dn.Offset(, 3)
            'Debug.Print Dn.Offset(, 4)

            If Not .Exists(Dn.Value) Then
                .Add Dn.Value, Dn
            Else
                If nRng Is Nothing Then Set nRng = _
                  Dn Else Set nRng = Union(nRng, Dn)
                'Debug.Print .item(Dn.Value).Offset(, 2)
                'Debug.Print Dn.Offset(, 2)
                x = (.item(Dn.Value).Offset(, 2) + Dn.Offset(, 2)) ' - (.item(Dn.Value).Offset(, 3) + Dn.Offset(, 3))
                '.item(Dn.Value).Offset(, 2) = (.item(Dn.Value).Offset(, 2) + Dn.Offset(, 2)) - (.item(Dn.Value).Offset(, 3) + Dn.Offset(, 3))
                '.item(Dn.Value).Offset(, 4) = x
            End If
        Next
    End With
End Sub

请帮助我解决这个问题。

0 个答案:

没有答案