如何用宏批量合并多列多行内容?Excel不规则项目行数处理需求
批量合并Excel项目对应的多行Article/Quantity数据
以下是可以直接运行的VBA宏,能自动遍历上万行数据,把每个项目对应的所有Article和Quantity合并成一行:
Sub MergeProjectItems() Dim ws As Worksheet Dim lastRow As Long Dim currentProject As String Dim mergedText As String Dim outputRow As Long ' 设置要处理的工作表,可根据实际修改Sheet名称 Set ws = ThisWorkbook.Sheets("Sheet1") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row outputRow = 1 ' 遍历所有行 For i = 1 To lastRow ' 遇到新项目时,先输出上一个项目的合并结果(如果有) If ws.Cells(i, "A").Value <> "" Then If currentProject <> "" Then ws.Cells(outputRow, "D").Value = currentProject ws.Cells(outputRow, "E").Value = mergedText outputRow = outputRow + 1 mergedText = "" End If currentProject = ws.Cells(i, "A").Value End If ' 合并当前行的Article和Quantity If ws.Cells(i, "B").Value <> "" And ws.Cells(i, "C").Value <> "" Then If mergedText <> "" Then mergedText = mergedText & ", " mergedText = mergedText & ws.Cells(i, "B").Value & "(" & ws.Cells(i, "C").Value & ")" End If Next i ' 处理最后一个项目 If currentProject <> "" Then ws.Cells(outputRow, "D").Value = currentProject ws.Cells(outputRow, "E").Value = mergedText End If MsgBox "合并完成!结果已输出到D、E列" End Sub
使用说明:
- 打开目标Excel文件,按
Alt+F11打开VBA编辑器 - 右键左侧的工作簿名称 → 插入 → 模块
- 将上述代码粘贴到模块窗口中
- 修改代码里的
Sheet1为你实际的工作表名称(如果需要) - 按
F5运行宏,或者点击工具栏的运行按钮
效果说明:
- 合并后的项目名称会放在D列,对应的
Article(Quantity)格式合并内容放在E列 - 自动处理行数不固定的项目,无需手动拆分或标记
- 上万行数据处理速度很快,不会有明显卡顿
内容的提问来源于stack exchange,提问作者HeleWho
相关产品推荐
相关产品推荐

