首页 > 解决方案 > 隔离一列中的唯一值,然后将值从另一列复制到其他重复值?

问题描述

我正在努力弄清楚如何将它们组合在一起并且可以使用一些帮助。我正在处理一份非常大的报告,手动执行任何操作都不是一种选择。

在最简单的解释中,我需要找到列(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     |
+-----------------+--------------+

有什么建议吗?

标签: excelvba

解决方案


要就地执行,请使用字典:

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

推荐阅读