Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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_Vba - Fatal编程技术网

Excel 基于多列中的重复值复制行

Excel 基于多列中的重复值复制行,excel,vba,Excel,Vba,我有下表,如果订单ID和合同相同,我想复制行 我想让宏执行以下操作: 你们能给我一个正确的方向来完成这件事吗?提前感谢您可以使此代码更加有效,但这是“朝着正确的方向推进以完成此任务”: Sub myMacro() ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' “去宽容 将行数据调整为整数,将行新建为整数 rowData=1 rowNew=1 '''''''''''''''''''''''''''''''

我有下表,如果订单ID和合同相同,我想复制行

我想让宏执行以下操作:


你们能给我一个正确的方向来完成这件事吗?提前感谢

您可以使此代码更加有效,但这是“朝着正确的方向推进以完成此任务”:

Sub myMacro()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
“去宽容
将行数据调整为整数,将行新建为整数
rowData=1
rowNew=1
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"前两项,
范围(“H”和rowNew,“J”和rowNew)。值=范围(“A”和rowData,“C”和rowData)。值
rowNew=rowNew+1
rowData=rowData+1
范围(“H”和rowNew,“J”和rowNew)。值=范围(“A”和rowData,“C”和rowData)。值
rowNew=rowNew+1
rowData=rowData+1
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'循环遍历所有A列条目
Do While范围(“A”&rowData)。值“”
发现类似条目
如果范围(“A”&rowData).Value=Range(“A”&rowData-1).Value则
范围(“H”和rowNew,“J”和rowNew)。值=范围(“A”和rowData,“C”和rowData)。值
rowNew=rowNew+1
rowData=rowData+1
“未找到类似条目
其他的
rowNew=rowNew+1
范围(“H”和rowNew,“J”和rowNew)。值=范围(“A1:C1”)。值
rowNew=rowNew+1
范围(“H”和rowNew,“J”和rowNew)。值=范围(“A”和rowData,“C”和rowData)。值
rowNew=rowNew+1
rowData=rowData+1
如果结束
环
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
端接头

我在这里没有看到任何实例。您是说
124
24
的最后两位数字与
6CV4 P0924
24
的最后两位数字匹配吗?对不起,我的意思是说如果有类似的订单ID和类似的合同,请复制行。因此,在上面的示例中,我们有5行,其中订单ID=111,合同=6CU4 P0920。可能存在订单Id相同但合同不同的情况(例如,在上面的示例中,创建了订单Id=111、合同=6CU4 P1922的新行)。在这种情况下,这一新行将与其他5行分开,这5行构成类似的内容?你试过什么了吗?有任何代码启动吗?如果它们按
ID
排序,然后按
Contract
排序,则可以循环遍历数据,并用类似
If cells(i,1)cells(i+1,1)和cells(i,3)cells(i+1,3)的内容标记范围的结束则行
i
将是一系列“类似”项目中的最后一行。
Sub myMacro()

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' decleration

    Dim rowData As Integer, rowNew As Integer
        rowData = 1
        rowNew = 1
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' put first two entries

    Range("H" & rowNew, "J" & rowNew).Value = Range("A" & rowData, "C" & rowData).Value
    rowNew = rowNew + 1
    rowData = rowData + 1

    Range("H" & rowNew, "J" & rowNew).Value = Range("A" & rowData, "C" & rowData).Value
    rowNew = rowNew + 1
    rowData = rowData + 1
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' loop through all of column A entries

    Do While Range("A" & rowData).Value <> ""

        ' similar entry found
        If Range("A" & rowData).Value = Range("A" & rowData - 1).Value Then

            Range("H" & rowNew, "J" & rowNew).Value = Range("A" & rowData, "C" & rowData).Value
            rowNew = rowNew + 1
            rowData = rowData + 1

        ' similar entry Not found
        Else

            rowNew = rowNew + 1
            Range("H" & rowNew, "J" & rowNew).Value = Range("A1:C1").Value
            rowNew = rowNew + 1

            Range("H" & rowNew, "J" & rowNew).Value = Range("A" & rowData, "C" & rowData).Value
            rowNew = rowNew + 1
            rowData = rowData + 1

        End If

    Loop
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

End Sub