用于合并和连接 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
很抱歉,如果这很常见 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