vba - 如何在 Excel 中对齐同一行上的重复项

标签 vba excel 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

但是此代码仅有助于查找重复项,而无法将重复项放在两列中的同一行上。

不知道你们能帮点忙吗?

非常感谢。

最佳答案

没有 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

关于vba - 如何在 Excel 中对齐同一行上的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12836396/

相关文章:

.net - cmd 的 Visual Basic 捕获输出

excel - MS Excel 的条件数据验证

vba - 检查一系列单元格中的值后,将单元格的值增加 1

Excel:使用单元格颜色填充作为单元格公式的输入

excel - 删除范围内的空白单元格

excel - 工作表中的 Active X 组合框

sql - 使用 SQL 查询导入具有重复列名的 CSV

excel - 计算另一个单元格中定义的公式

vba - Do...循环直到具有多个条件

excel - 是否可以计算整行的总和?