Note: The other languages of the website are Google-translated. Back to English

如何在Excel中快速合并具有相同数据的相邻行?

假设您有一个工作表,在相邻的行中有相同的数据,现在您想将相同的单元格合并到一个单元格中,以使数据看起来整洁美观。 如何快速方便地合并具有相同数据的相邻行? 今天,我将向您介绍一些解决此问题的快速方法。


使用VBA代码合并同一数据的相邻行

当然,您可以合并相同的数据 合并与中心 命令,但是如果需要合并数百个单元格,则此方法将很耗时。 因此,以下VBA代码可以帮助您轻松合并相同的数据。

1。 按住 ALT + F11 键,然后打开 Microsoft Visual Basic应用程序 窗口。

2。 点击 插页 > 模块,然后将以下宏粘贴到 模块窗口。

Sub MergeSameCell()
'Updateby Extendoffice
Dim Rng As Range, xCell As Range
Dim xRows As Integer
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xRows = WorkRng.Rows.Count
For Each Rng In WorkRng.Columns
    For i = 1 To xRows - 1
        For j = i + 1 To xRows
            If Rng.Cells(i, 1).Value <> Rng.Cells(j, 1).Value Then
                Exit For
            End If
        Next
        WorkRng.Parent.Range(Rng.Cells(i, 1), Rng.Cells(j - 1, 1)).Merge
        i = j - 1
    Next
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

3。 然后按 F5 键以运行此代码,屏幕上会显示一个对话框,用于选择要使用的范围。 看截图:

doc合并相同的单元格2

4. 然后点击 OK,则A列中的相同数据将合并在一起。 看截图:

doc合并相同的单元格1


使用Kutools for Excel合并相同数据的相邻行

随着 合并相同的单元格 实用程序 Kutools for Excel,您只需单击一下即可快速合并多个列中的相同值。

Kutools for Excel : 带有300多个便捷的Excel加载项,可以在30天内免费试用. 

安装后 Kutools for Excel,您可以执行以下操作:

1。 选择要合并具有相同数据的相邻行的列。

2。 点击 库工具 > 合并与拆分 > 合并相同的单元格,请参见屏幕截图:

3。 然后,所选列中的相同数据已合并到一个单元格中。 看截图:

doc合并相同的单元格4

点击下载Kutools for Excel并立即免费试用!

要了解更多信息,请访问此 合并相同的单元格 功能。


演示:将相同的单元格合并到一个单元格中,或取消合并以填充重复的值:

Kutools for Excel:具有300多个方便的Excel加载项,可以在30天内免费试用,没有任何限制。 立即下载并免费试用!

最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (43)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
如何复制 VBA 宏以合并列而不是行中的相邻单元格? 谢谢
该评论由网站上的主持人最小化
Violeta,我复制了这一行(如下)。 例如尝试尝试例如尝试尝试并将代码更改为: Next WorkRng.Parent.Range(Rng.Cells(1, i), Rng.Cells(1, j - 1)).Merge i = j - 1 It将上面的行合并到“eg”和“try”
该评论由网站上的主持人最小化
对于仍在努力实现这一目标的任何人,我想我已经掌握了代码开始 ******************************** ***** Sub MergeSameCell() 'Updateby20131127 Dim Rng As Range, xCell As Range Dim xRows As Integer xTitleId = "MergeSimilar" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address , 类型:= 8) Application.ScreenUpdating = False Application.DisplayAlerts = False 'xRows = WorkRng.Rows.Count xCols = WorkRng.Columns.Count '对于 WorkRng.Columns 中的每个 Rng ' For i = 1 To xRows - 1 ' For j = i + 1 To xRows ' If Rng.Cells(i, 1).Value Rng.Cells(j, 1).Value Then ' Exit For ' End If ' Next ' WorkRng.Parent.Range(Rng.Cells(i , 1), Rng.Cells(j - 1, 1)).Merge ' i = j - 1 ' Next 'Next For Each Rng In WorkRng.Rows For i = 1 To xCols - 1 For j = i + 1 To xCols If Rng.Cells(1, i).Value Rng.Cells(1, j).Value Then Exit For End If Next WorkRng.Parent.Range(Rng.Cells(1, i), Rng.Cells(1, j - 1)).Merge i = j - 1 Next Next Application.DisplayAlerts = True Appl ication.ScreenUpdating = True End Sub ************************************* End of Code IE 简单修改将任何行引用交换为列引用的代码
该评论由网站上的主持人最小化
非常感谢!!! 在关键时刻帮助了我
该评论由网站上的主持人最小化
这对我有用很多次:) 非常感谢,它为我节省了很多工作时间。 我有一个小要求。 我正在尝试找到进行相同合并的方法,但是当每个值下方有空单元格时,将每个单元格与下面的所有空单元格合并。 如何修改宏? 先感谢您
该评论由网站上的主持人最小化
试试这个代码 Sub MergeSameCell() Dim Rng As Range, xCell As Range Dim xRows As Integer xTitleId = "KutoolsforExcel" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:= 8) Application.ScreenUpdating = False Application.DisplayAlerts = False xRows = WorkRng.Rows.Count For Each Rng In WorkRng.Columns For i = 1 To xRows - 1 For j = i + 1 To xRows If Rng.Cells(i, 1 ).Value Rng.Cells(j, 1).Value Then Exit For End If Next If Not IsEmpty(Rng.Cells(i, 1).Value) Or Not IsEmpty(Rng.Cells(j - 1, 1).Value ) 然后 WorkRng.Parent.Range(Rng.Cells(i, 1), Rng.Cells(j - 1, 1)).Merge End If i = j - 1 Next Next Application.DisplayAlerts = True Application.ScreenUpdating = True End子
该评论由网站上的主持人最小化
试试这个代码 Sub MergeSameCell() Dim Rng As Range, xCell As Range Dim xRows As Integer xTitleId = "KutoolsforExcel" Set WorkRng = Application.Selection Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:= 8) Application.ScreenUpdating = False Application.DisplayAlerts = False xRows = WorkRng.Rows.Count For Each Rng In WorkRng.Columns For i = 1 To xRows - 1 For j = i + 1 To xRows If Rng.Cells(i, 1 ).Value Rng.Cells(j, 1).Value Then Exit For End If Next If Not IsEmpty(Rng.Cells(i, 1).Value) Or Not IsEmpty(Rng.Cells(j - 1, 1).Value ) 然后 WorkRng.Parent.Range(Rng.Cells(i, 1), Rng.Cells(j - 1, 1)).Merge End If i = j - 1 Next Next Application.DisplayAlerts = True Application.ScreenUpdating = True End子
该评论由网站上的主持人最小化
如果我有相同的名字 lie Raju 1000 Raju 2000 Monu 100 Monu 200 那么我怎么能用金额做marge名字
该评论由网站上的主持人最小化
嗨,运行此宏时,我在 WorkRng.Parent.Range(rng.Cells(i, 1), rng.Cells(j - 1, 1)).Merge Any 行收到“应用程序定义或对象定义错误”想法如何解决? 真诚的,迈克尔
该评论由网站上的主持人最小化
我得到同样的错误。 你知道了吗? 如果你这样做,你是怎么做的? 谢谢
该评论由网站上的主持人最小化
我收到同样的错误
该评论由网站上的主持人最小化
我在这里修改了脚本,以便它将下面的单元格与相同的值或空单元格合并: Sub MergeSameCell() 'Updateby20131127 Dim Rng As Range, xCell As Range Dim xRows As Integer xTitleId = "KutoolsforExcel" Set WorkRng = Application.Selection设置 WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8) Application.ScreenUpdating = False Application.DisplayAlerts = False xRows = WorkRng.Rows.Count For Each Rng In WorkRng.Columns For i = 1 To xRows - 1 For j = i + 1 To xRows If Rng.Cells(j, 1).Value "" Then If Rng.Cells(i, 1).Value Rng.Cells(j, 1).Value Then Exit For End If End If Next WorkRng.Parent.Range(Rng.Cells(i, 1), Rng.Cells(j - 1, 1)).Merge i = j - 1 Next Next Application.DisplayAlerts = True Application.ScreenUpdating = True结束子
该评论由网站上的主持人最小化
嗨,请帮忙。 我的代码有问题,这条线。 哪里不对了? 如果 Rng.Cells(j, 1).Value "" 那么
该评论由网站上的主持人最小化
你好呀。 你应该有:如果 Rng.Cells(j, 1).Value = "" 那么......
该评论由网站上的主持人最小化
合并不错。 但它需要在运行代码时指定范围。 我想在 vba 代码中指定范围,即 B1:B50。 并使其左上对齐,但请提供帮助。
该评论由网站上的主持人最小化
运行上述代码时,会显示编译错误:语法错误。 在使用“”的行和此行的下一行。
该评论由网站上的主持人最小化
我也遇到了这条线的这个问题。 如果 Rng.Cells(j, 1).Value "" 那么有人可以帮忙吗?
该评论由网站上的主持人最小化
你好,如何在没有用户输入的情况下自动放置范围
该评论由网站上的主持人最小化
很抱歉,我让其他人为我编写脚本,我不知道可以帮助您进行修改。
该评论由网站上的主持人最小化
你好,先生, 。 我尝试了 vba 代码,但它不起作用。 .408 的错误消息。 特别是评论 WorkRng.Parent。 Range(rng.Cells (i, 1), rng.Cells(j - 1, 1)).Merge。 请发送解决方案。 我花了很多时间合并文档。 我主要合并了这种格式的单元格 C20059290。 感谢并问候普鲁索萨曼。 C
该评论由网站上的主持人最小化
尊敬的先生, 。 我正在为合并单元格的 Excel 工作表使用 vba 代码。 它无法正常工作是因为 408 错误。 特别是这段代码 WorkRng.Parent。 Range(rng.Cells (i, 1), rng.Cells(j - 1, 1)).Merge。 给出解决方案。 感谢和问候普鲁索萨曼
该评论由网站上的主持人最小化
嗨,有人可以用逆向工程来指导 - 对所有单元格填充相同的值。
该评论由网站上的主持人最小化
嗨,makro 可以工作,但是现在当我想过滤 A 列时,只能看到 B 列中适用于 A 列的第一个信息。 查看 makro 中给出的示例,如果我想在合并完成后的星期一进行过滤,则只会显示 Nicol,并且不会显示来自 Lucy 和 Lily 的信息。 我可以添加一行来避免这种情况吗?
该评论由网站上的主持人最小化
如果你真的想过滤,那么合并单元格不会帮助你。
该评论由网站上的主持人最小化
In EXCEL INPUT NAME PRO1 PRO2 PRO3 A B C output A PRO1 A PRO2 A PRO3 B PRO1 B PRO2 B PRO3 C PRO1 C PRO2 C PRO3
该评论由网站上的主持人最小化
这真的很有帮助,并且在更大程度上节省了我的时间
该评论由网站上的主持人最小化
是否可以修改 VBA 代码以实现跨列合并(而不是向下行,如上所述)然后对所有行重复?
该评论由网站上的主持人最小化
使用上面的代码,然后转置结果
该评论由网站上的主持人最小化
很有帮助 !! 非常感谢
该评论由网站上的主持人最小化
哦,伙计,你节省了我很多时间。 谢谢!!!!
该评论由网站上的主持人最小化
在上面的 VBA 代码行号 19 "i=j-1"
无论如何,它将如何影响我们的逻辑? 我确实删除了它,仍然可以获得相同的结果!
为什么它存在的任何特定目的?
该评论由网站上的主持人最小化
它是将值 i 限制为最后一行。
请无视此帖!
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护