Excel 宏,用于在相同行合并到不同列时合并特定列中的单元格

Excel 宏,用于在相同行合并到不同列时合并特定列中的单元格,excel,merge,excel-2007,vba,Excel,Merge,Excel 2007,Vba,我需要帮助找到一个宏,该宏可以在特定列中的行之间合并单元格,如果这些行已经合并到另一列中。下面是我现在看到的屏幕截图,显示了B列中需要合并的单元格,这些单元格基于a列中已经合并的单元格 下面的屏幕截图是宏运行后我需要的电子表格 尼克斯达已经回答了 Sub mergecolumn() Dim cnt As Integer Dim rng As Range Dim str As String For i = ActiveSheet.UsedRange.Rows.Count To 1 Step

我需要帮助找到一个宏,该宏可以在特定列中的行之间合并单元格,如果这些行已经合并到另一列中。下面是我现在看到的屏幕截图,显示了B列中需要合并的单元格,这些单元格基于a列中已经合并的单元格

下面的屏幕截图是宏运行后我需要的电子表格


尼克斯达已经回答了

Sub mergecolumn()

Dim cnt As Integer
Dim rng As Range
Dim str As String

For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
cnt = Cells(i, 1).MergeArea.Count
Set rng = Range(Cells(i, 2), Cells(i - cnt + 1, 2))

For Each cl In rng
    If Not IsEmpty(cl) Then str = str + vbNewLine + cl
Next
If str <> "" Then str = Right(str, Len(str) - 2)

Application.DisplayAlerts = False
rng.Merge
rng = str
Application.DisplayAlerts = True

str = ""
i = i - cnt + 1
Next i

End Sub
子合并列()
作为整数的Dim cnt
变暗rng As范围
作为字符串的Dim str
对于i=ActiveSheet.UsedRange.Rows.Count,将其设置为1步骤-1
cnt=单元格(i,1).MergeArea.Count
设置rng=范围(单元(i,2),单元(i-cnt+1,2))
对于rng中的每个cl
如果不是IsEmpty(cl),则str=str+vbNewLine+cl
下一个
如果str“”则str=Right(str,Len(str)-2)
Application.DisplayAlerts=False
合并
rng=str
Application.DisplayAlerts=True
str=“”
i=i-cnt+1
接下来我
端接头

到目前为止,您有哪些代码?发布您的代码或完成的任何工作,而不仅仅是您的要求。您是否尝试过在Excel中记录合并以获取一些代码,然后编写循环或其他内容?