Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在一列中隔离唯一值,然后将另一列中的值复制到其他重复值?_Excel_Vba - Fatal编程技术网

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

Excel 在一列中隔离唯一值,然后将另一列中的值复制到其他重复值?,excel,vba,Excel,Vba,我正在努力想办法把它组合起来,需要一些帮助。我有一个非常大的报告,我的工作和手动做任何这是根本不是一个选项 在最简单的解释中,我需要找到列Col J中存在重复值的实例,并查看包含重复值的第一行。然后从另一列F列复制该值,并将其粘贴到J列中包含重复项的每一行中 举例来说,如果报告从以下内容开始: +-----------------+--------------+ | Col F | Col J | +-----------------+-------------

我正在努力想办法把它组合起来,需要一些帮助。我有一个非常大的报告,我的工作和手动做任何这是根本不是一个选项

在最简单的解释中,我需要找到列Col J中存在重复值的实例,并查看包含重复值的第一行。然后从另一列F列复制该值,并将其粘贴到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     |
+-----------------+--------------+

有什么建议吗?

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

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

您可以在一个新列中使用INDEX/MATCH:=INDEXF:F,MATCHJ1,J:J,0。