用于合并和连接 Excel 中与其他列的信息匹配的行的单元格的宏

Macro to merge and concatenate cells in Excel for rows in which information on other columns matches

很抱歉,如果这很常见 post,但找不到完全适用于我的内容。

它与 post 非常相似(除了我不只是合并 2 个单元格,我希望合并和连接): Macro to merge cells in Excel for rows in which information in other columns matches

参考上面 post 中的图像,我要查找的是要合并的单元格 P2 和 P3 以及要连接的数据。例如:如果 P2 有 abc,而 P3 有 xyz,我正在寻找合并单元格中的最终产品为 abcxyz。

如有任何帮助,我们将不胜感激。我所拥有的只能让我合并,但我不确定如何连接它。

Sub Main()

Dim i As Long
Dim j As Long

Dim sameRows As Boolean
sameRows = True

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
    For j = 1 To 6
        If StrComp(Cells(i, j), Cells(i + 1, j), vbTextCompare) Then
            sameRows = False
        End If
    Next j

    If sameRows Then
        Range(Cells(i, 7), Cells(i + 1, 7)).Merge
    End If

    sameRows = True
Next i

结束子

解决方案非常简单:将第一个 String 存储在一个变量中,

Dim FinalText As String

FinalText = Cells(i, 7).Text

添加第二个String

FinalText = FinalText & Cells(i + 1, 7).Text

然后在合并两个单元格后,将变量的内容写入合并后的单元格中。

Cells(i, 7) = FinalText

虽然我不会给你完整的解决方案,因为你复制粘贴了你找到的东西并且不会尝试自己写一些东西。

编辑:如果要合并多个单元格,我会使用相同的技术,但在检查每个单元格中包含的值是否相等的条件中使用 FinalText = FinalText & Cells(i + 1, 7).Text...

只需在代码中添加这一行:

Cells(i, 7).Value = Cells(i, 16).Text + Cells(i + 1, 16).Text

完整代码:

Sub merge()
Dim i As Long
Dim j As Long

Dim sameRows As Boolean
sameRows = True

For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
    For j = 1 To 6
        If StrComp(Cells(i, j), Cells(i + 1, j), vbTextCompare) Then
            sameRows = False
        End If
    Next j

    If sameRows Then
        Range(Cells(i, 7), Cells(i + 1, 7)).merge
        Cells(i, 7).Value = Cells(i, 16).Text + Cells(i + 1, 16).Text
    End If

    sameRows = True
Next i
End Sub