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

宏,用于合并和连接Excel中与其他列信息匹配的行的单元格,excel,merge,concatenation,vba,Excel,Merge,Concatenation,Vba,如果这是一篇常见的帖子,请道歉,但找不到完全适用于我的帖子 这是一篇非常类似于的文章,除了不只是合并两个单元格之外,我希望合并并连接: 参考上面文章中的图像,我要寻找的是要合并的单元格P2和P3以及要连接的数据。例如:如果P2有abc,P3有xyz,我在合并单元格中寻找的最终产品是abcxyz Cells(i, 7) = FinalText 任何帮助都将不胜感激。我所拥有的只是使我能够合并,但我不知道如何连接它 副总管 Dim i As Long Dim j As Long Dim sam

如果这是一篇常见的帖子,请道歉,但找不到完全适用于我的帖子

这是一篇非常类似于的文章,除了不只是合并两个单元格之外,我希望合并并连接:

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

Cells(i, 7) = FinalText
任何帮助都将不胜感激。我所拥有的只是使我能够合并,但我不知道如何连接它

副总管

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

End Sub

解决方案非常简单:将第一个字符串存储在变量中

Dim FinalText As String

FinalText = Cells(i, 7).Text
添加第二个字符串

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

Cells(i, 7) = FinalText
不过,我不会给你完整的解决方案,因为你会复制粘贴你发现的东西,而不会试图自己写东西


编辑:如果要合并多个单元格,我会使用相同的技术,但使用FinalText=FinalText&Cellsi+1,7。条件中的文本检查每个单元格中包含的值是否相等…

只需在代码中添加以下行:

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

非常感谢。非常感谢您的帮助。现在工作很好。另一个问题是:是否可以在代码中插入一些不显示此选项包含多个值的内容。。。消息?是的,如果只是烦人的消息,您可以在触发消息的代码行之前插入Application.DisplayAlerts=False来禁用它们。完成所需操作后,请记住再次将其设置为TrueDordor130884。在我的工作表上对其进行验证测试后,一切都很好,除了在有3个单元格由于公共值而要合并的情况下,复制的文本仅用于前2个单元格。如果相同,则FinalText=Cellsi,7.text-FinalText=FinalText&Cellsi+1,7.text-Cellsi,7=FinalText Rowsi+1.EntireRow.Delete如果我的答案对您有帮助,请随时将其标记为您的解决方案