Excel:根据一个重复单元格合并多行/列

Excel:根据一个重复单元格合并多行/列

我需要合并根据特定单元格的公共值获取多行和多列的信息。

我想我可以在这里使用宏,因为问题是我必须合并大量信息,其中有些行、有些列是空白的,有些列有信息。

我需要用来合并行的单元格中的值可能会出现多次。

我添加了一个图像,您可以在其中看到文档的结构和“电子邮件”列的重复值列表的一部分。我用 VLOOKUP 函数检查它,大约有 3000 个,而工作表大约有 5000 行。

示例 1

在此处输入图片描述

示例 2

在此处输入图片描述

答案1

使用 VBA/宏:

Public Sub myDuplicates()
    Dim wks As Worksheet
    Set wks = ActiveSheet
    emailcolumn = 4
    totalcolumns = 12
    merges = 0
    theSymbol = " / "
    Application.ScreenUpdating = False
    lastRow = wks.Cells(Rows.Count, "A").End(xlUp).Row
    For i = lastRow To 1 Step -1
        email1 = wks.Cells(i, emailcolumn)
        For j = i - 1 To 2 Step -1
            email2 = wks.Cells(j, emailcolumn)
            If LCase(email1) = LCase(email2) Then
                For k = 1 To totalcolumns
                    If LCase(Cells(i, k)) <> LCase(Cells(j, k)) Then
                        Cells(j, k) = Cells(j, k) & theSymbol & Cells(i, k)
                    End If
                Next k
                wks.Rows(i).Delete
                j = 1
                merges = merges + 1
            End If
        Next j
    Next i
    Application.ScreenUpdating = True
    theMessage = MsgBox("Finished with " & merges & " merges", vbInformation)
End Sub

打开 VBA/Macros,在下方插入一个新模块本工作簿并将此代码粘贴到右侧。

当两封电子邮件相同时,它会合并所有不同的仅限字段。并使用/在单元格内分隔它们。

它假设您的电子邮件字段是第四列。可以使用变量进行更改emailcolumn,并假设您的最大列数为 12,也可以在变量上轻松更改totalcolumns

相关内容