2014-09-04 68 views
0

我有以下表,我想复制的行如果订单ID和合同是一样的多列基于重复的值复制行

a busy cat http://i57.tinypic.com/2qta42b.jpg

我想获得宏要做到这一点:

a busy cat http://i59.tinypic.com/2vdfc0i.png

难道你们给我推到正确的方向来做到这一点?在此先感谢

+0

我在这里看不到任何情况下他们在哪里。你是不是说'124'中'24'的最后两位数字与'6CV4 P0924'中'24'的最后两位数字相符? – 2014-09-04 17:14:09

+0

对不起,我的意思是说如果有类似的订单ID和类似的合同,然后复制行。所以,在上面的例子中,我们有5行,其中订单ID = 111和合约= 6CU4 P0920。可能会出现这种情况,即您拥有相同的订单ID但合同不同(例如,对于Order ID为111的新行上面的示例,创建Contract = 6CU4 P1922)。在这种情况下,这个新行将与其他5行分开 – user1753675 2014-09-04 17:16:42

+0

什么构成类似?你有没有尝试过任何东西?任何代码开始? – 2014-09-04 17:18:30

回答

0

可以使此代码更EFFIENT,但这是“推到正确的方向来完成这个” :)

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