移动列之间重复的值

  1. 这是我的Excel工作表。 列G和列J具有相同的值,但顺序不同。

在这里输入图像说明

  1. 代码运行并将列J中的值移动到列H的旁边,列G的值相同

在这里输入图像说明

  1. 问题是当有两个相同的值时,它将它移到它在列H中find的第一个值。J:2中的值747.00必须移动到H:2,而J:5中的值747.00必须移动到H:6不是H:2。

在这里输入图像说明 在这里输入图像说明

这是代码:

 Dim cel As Range, cel2 As Range Dim lastRow As Long lastRow = Cells(Rows.Count, 10).End(xlUp).Row For Each cel In Range(Cells(1, 7), Cells(lastRow, 7)) For Each cel2 In Range(Cells(1, 10), Cells(lastRow, 10)) If cel2.Value = cel.Value Then cel.Offset(0, 1).Value = cel2.Value cel2.Value = "" End If Next cel2 Next cel 

这听起来像是在J列循环寻找G列中的匹配。我已经通过循环通过列G并在列J中寻找匹配来逆转这种情况。一旦find匹配,就将它移到列H从而将其从栏J中删除

 Sub match_em_up() Dim rwg As Long, rwj As Long With Worksheets("Sheet1") For rwg = 2 To .Cells(Rows.Count, "G").End(xlUp).Row If CBool(Application.CountIf(.Columns("J"), .Cells(rwg, "G").Value2)) Then rwj = Application.Match(.Cells(rwg, "G").Value2, .Columns("J"), 0) .Cells(rwg, "H") = .Cells(rwj, "J").Value2 .Cells(rwj, "J").ClearContents End If Next rwg End With End Sub 

之前:

在这里输入图像说明

后:

在这里输入图像说明