在一个列中隔离唯一值,然后将值从另一列复制到其他重复值?

时间:2020-04-20 19:23:31

标签: excel vba

我正在努力弄清楚如何将其组合在一起,并可能需要一些帮助。我正在处理一个非常大的报告,而手动执行任何一项操作根本不是一种选择。

在最简单的解释中,我需要查找列中存在重复值的实例(Col J),并查看包含重复值的第一行。然后从另一列(Col F)复制该值,然后将其粘贴到在Col J中包含重复项的所有其他行中。

为了说明,如果报告看起来像这样:

+-----------------+--------------+
|  Col F          |  Col J       |
+-----------------+--------------+
| Value 1         |     1111     |
| Value 2         |     1111     |
| Value 3         |     2222     |
| Value 4         |     3333     |
| Value 5         |     1111     |
| Value 6         |     3333     |
| Value 7         |     3333     |
| Value 8         |     4444     |
| Value 9         |     4444     |
+-----------------+--------------+

之后我需要它看起来像这样:

+-----------------+--------------+
|  Col F          |  Col J       |
+-----------------+--------------+
| Value 1         |     1111     |
| Value 1         |     1111     |
| Value 3         |     2222     |
| Value 4         |     3333     |
| Value 1         |     1111     |
| Value 4         |     3333     |
| Value 4         |     3333     |
| Value 8         |     4444     |
| Value 8         |     4444     |
+-----------------+--------------+

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

要就地做,请使用字典:

Sub rplc()
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")

    With Worksheets("Sheet5") 'Change to your sheet name
        Dim lstrow As Long
        lstrow = .Cells(.Rows.Count, 10).End(xlUp).Row

        Dim i As Long
        For i = 2 To lstrow
            If dict.exists(.Cells(i, 10).Value) Then
                .Cells(i, 6).Value = dict(.Cells(i, 10).Value)
            Else
                dict.Add .Cells(i, 10).Value, .Cells(i, 6).Value
            End If
        Next i
    End With
End Sub