根据另一对列更新两对列

时间:2015-03-09 17:43:19

标签: excel excel-vba multiple-columns vba

我在一个工作表中有两组三个分组列。这延伸了30000行。示例数据如下:

code    Serial  Amount  code    Serial  Amount
1111    2346    2000000 2222    5555    300000
2222    4567    4000000 3333    6666    700000
3333    4545    7000000 1111    7777    8000000
                        1111    8888    550000
                        1111    9999    600000

第一个代码列中的某些列值在第二个代码列中重复,但是以无序方式重复。我想将第二个代码列值与第一个匹配,并根据匹配更新 Serial Amount 值。我能描述逻辑的最好方法是:

IF  (Code(1)==Code(2)) 
THEN 
    (Amount(1) ==Amount(2) ) 
 and 
    (Serial(1)==Serial(2))

正如您在示例代码(2)列中看到的那样,我们有三个重复的1111值但在代码(1)列中我们只有一个1111.i想要excel在第1行更新串行 金额如果匹配其他2次则不存在代码中的任何1111(1)插入序列(2) ) amount(2) 代码(2)作为 serial(1) 金额(1)中的新行 代码(1) 我尝试下面的代码它更新唯一的代码,但它不能插入重复的代码,如第二和第三1111与它的序列和数量。

Sub checklist()
 Dim LastRow As Long
    With ActiveSheet
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With

Dim cell As Range
For Each cell In Range("a1:a" & LastRow)
For Each cell2 In Range("D1:D" & LastRow)

If cell.Offset(0, 0) <> "" And cell.Offset(0, 0) = cell2.Offset(0, 0) Then
cell2.Offset(0, 0) = cell.Offset(0, 0)
cell2.Offset(0, 1) = cell.Offset(0, 1)
cell2.Offset(0, 2) = cell.Offset(0, 2)

End If
Next
Next

End Sub

结果应如下所示。

code    Serial  Amount  code    Serial  Amount
1111    7777    8000000 2222    5555    300000
1111    8888    550000  3333    6666    700000
1111    9999    600000  1111    7777    8000000
2222    5555    300000  1111    8888    550000
3333    6666    700000  1111    9999    600000

0 个答案:

没有答案