我的数据在第一栏中有代码代码。基于此,我需要将所有值添加到其相邻行中,并将其放在“ 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
请帮助我解决这个问题。