Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 根据另一对列更新两对列_Excel_Multiple Columns_Vba - Fatal编程技术网

Excel 根据另一对列更新两对列

Excel 根据另一对列更新两对列,excel,multiple-columns,vba,Excel,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

我在一个工作表中有两组三个分组列。这条路长达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
第一个代码列中的一些值在第二个代码列中重复,但顺序混乱。我想将第二个代码列的值与第一个代码列的值匹配,并根据匹配情况更新序列值和金额值。我能描述逻辑的最好方式是:

IF  (Code(1)==Code(2)) 
THEN 
    (Amount(1) ==Amount(2) ) 
 and 
    (Serial(1)==Serial(2))
正如您在示例代码(2)列中看到的,我们有三个重复的1111值,但在代码(1)列中,我们只有一个1111。如果与其他两个时间匹配的1111在代码(1)中不存在任何1111,我希望excel更新第1行中的序列金额。插入序列(2)金额(2)代码(2)作为序列(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
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