如何在Excel中的相同行上对齐重复项

时间:2012-10-11 09:27:51

标签: excel vba excel-vba excel-formula

这是一个我无法回答的简单问题。

我在Excel中有两列这样的列:

Col1    Col2
 A       C
 B       I
 C       E
 D       D
 E       A
 F       F
 G       B
 H       
 I       

我想对两列进行排序,以便在两列中的相同行上对齐相同的值,例如:

Col1    Col2
 A       A
 B       B
 C       C
 D       D
 E       E
 F       F
 G       
 H       
 I       I
 K       

到目前为止,我已经尝试了以下VBA代码:

 Sub HighlightDups()
    Dim i, LastRowA, LastRowB
    LastRowA = Range("A" & Rows.Count).End(xlUp).Row
    LastRowB = Range("B" & Rows.Count).End(xlUp).Row
    Columns("A:A").Interior.ColorIndex = xlNone
    Columns("B:B").Interior.ColorIndex = xlNone
    For i = 1 To LastRowA
        If Application.CountIf(Range("B:B"), Cells(i, "A")) > 0 Then
            Cells(i, "A").Interior.ColorIndex = 36
        End If
    Next
    For i = 1 To LastRowB
        If Application.CountIf(Range("A:A"), Cells(i, "B")) > 0 Then
            Cells(i, "B").Interior.ColorIndex = 36
        End If
    Next
End Sub

但是这段代码只是帮助找到重复项,并且无法将重复项放在两列中的相同行上。

我想知道你们能不能提供一点帮助?

非常感谢。

2 个答案:

答案 0 :(得分:30)

没有VBA

  • 将空白列插入B列
  • B1中的
  • =IF(ISNA(MATCH(A1,C:C,0)),"",INDEX(C:C,MATCH(A1,C:C,0)))并复制
  • 将列B复制并粘贴回自身作为删除公式的值

在VBA中

Sub Macro1()
    Dim rng1 As Range
    Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp))
    rng1.Offset(0, 1).Columns.Insert
    With rng1.Offset(0, 1)
        .FormulaR1C1 = _
        "=IF(ISNA(MATCH(RC[-1],C[1],0)),"""",INDEX(C[1],MATCH(RC[-1],C[1],0)))"
        .Value = .Value
    End With
End Sub

答案 1 :(得分:-1)

没有VBA

  • in C1 put = VLOOKUP(A:A,B:B,1)
  • 如果你有多列,在E1 put = VLOOKUP(A:A,B:D,2)....最后一位应改为1(col B),2(col C)3(Col D )因此。

您必须相应地在单独的列中复制并粘贴您要查找的每个阵列,但您应该能够轻松地复制和粘贴列

希望这会有所帮助。如果您有任何问题,请告诉我