1.1 使用空格、逗号或其他分隔符将列/行合并到一个单元格中 1.11 使用和号符号 (&) 1.12 使用 CONCATENATE 函数(适用于 Excel2016 或更早版本) 1.13 使用 CONCAT 函数或 TEXTJOIN 函数(适用于 Excel2019 或 Excel365) 1.14 使用记事本(仅适用于合并列) 扩展:使用换行符作为分隔符将列/行合并到一个单元格中 1.2 合并列/行到一个单元格且不包含空白 1.21 使用 TEXTJOIN 函数(适用于 Excel2019 或 Excel365) 1.22 使用和号符号 (&) 1.23通过 VBA代码添加到单元格末尾 1.4 如果为空则合并两列 1.41 使用 IF 函数 1.42 使用 VBA 2.1 将具有相同 ID 的行合并,并用逗号或其他分隔符分隔 2.11 使用 VBA 2.12 使用 IF 函数添加辅助列 2.13 使用实用工具 – 高级合并行 2.2 合并具有相同 ID 的行并进行计算 2.21 使用合并计算功能 2.22 使用 VBA 2.23 使用实用工具 – 高级合并行 2.3 合并相邻且值相同的行 2.31 使用 VBA 2.32 使用实用工具 – 合并相同单元格 3.1. 将多行多列合并到一个单元格中 3.11 使用和号符号 (&) 3.12 使用 CONCATENATE 函数(适用于 Excel2016 或更早版本) 3.13 使用 CONCAT 函数或 TEXTJOIN 函数(适用于 Excel2019 或 Excel365) 3.14 使用“合并行/列/单元格并保留值”功能 3.2. 将单元格合并为单列/单行 3.21 命名区域并使用 INDEX 函数(仅适用于合并为单列) 3.22 VBA(仅适用于单列) 3.23 使用实用工具 – 转换区域 3.3 将多列堆叠为一列且不重复 3.31复制粘贴并删除重复值 3.32 使用 VBA 3.4. 合并单元格并保留格式 3.41 在公式中嵌入 TEXT 函数 3.42 使用 Microsoft Word 3.43 使用实用工具 – 合并并保留数据 3.5 合并单元格生成日期 3.51 使用 DATE 函数 Excel 教程:合并列、行、单元格 Author Sun • Last modified 2025-08-22 在日常 Excel 工作中,我们经常需要合并列、行或单元格,例如将姓和名分别在两列中合并为一列以获得全名,基于相同 ID 合并行并对对应数值求和,或将一组单元格合并为一个单元格等。本教程列举了 Excel 中所有关于合并列/行/单元格的场景,并为您提供了不同的解决方案。
本教程导航 1 合并列/行到一个单元格1.1 使用空格、逗号或其他分隔符将列/行合并到一个单元格中
1.11 使用和号符号 (&)
1.12 使用 CONCATENATE 函数(适用于 Excel2016 或更早版本)
1.13 使用 CONCAT 函数或 TEXTJOIN 函数(适用于 Excel2019 或 Excel365)
1.14 使用记事本(仅适用于合并列)
扩展:使用换行符作为分隔符将列/行合并到一个单元格中
1.2 合并列/行到一个单元格且不包含空白
1.21 使用 TEXTJOIN 函数(适用于 Excel2019 或 Excel365)
1.22 使用和号符号 (&)
1.23通过 VBA代码添加到单元格末尾
1.3 合并列/行/单元格到一个单元格且保留数据
1.4 如果为空则合并两列
1.41 使用 IF 函数
1.42 使用 VBA
2. 合并具有相同 ID 的行2.1 将具有相同 ID 的行合并,并用逗号或其他分隔符分隔
2.11 使用 VBA
2.12 使用 IF 函数添加辅助列
2.13 使用实用工具 – 高级合并行
2.2 合并具有相同 ID 的行并进行计算
2.21 使用合并计算功能
2.22 使用 VBA
2.23 使用实用工具 – 高级合并行
2.3 合并相邻且值相同的行
2.31 使用 VBA
2.32 使用实用工具 – 合并相同单元格
3. 合并单元格3.1. 将多行多列合并到一个单元格中
3.11 使用和号符号 (&)
3.12 使用 CONCATENATE 函数(适用于 Excel2016 或更早版本)
3.13 使用 CONCAT 函数或 TEXTJOIN 函数(适用于 Excel2019 或 Excel365)
3.14 使用“合并行/列/单元格并保留值”功能
3.2. 将单元格合并为单列/单行
3.21 命名区域并使用 INDEX 函数(仅适用于合并为单列)
3.22 VBA(仅适用于单列)
3.23 使用实用工具 – 转换区域
3.3 将多列堆叠为一列且不重复
3.31复制粘贴并删除重复值
3.32 使用 VBA
3.4. 合并单元格并保留格式
3.41 在公式中嵌入 TEXT 函数
3.42 使用 Microsoft Word
3.43 使用实用工具 – 合并并保留数据
3.5 合并单元格生成日期
3.51 使用 DATE 函数
在本教程中,我通过一些示例来说明方法,您可以在使用下方 VBA代码或公式时根据需要更改引用,或者直接下载示例文件尝试相关方法。
点击下载示例文件
1 合并列/行到一个单元格 1.1 使用空格、逗号或其他分隔符将列/行合并到一个单元格中在 Excel 中,将列或行合并到一个单元格并用逗号、空格或其他分隔符分隔结果(如下图所示)是最常见的操作。
将列合并到一个单元格 将行合并到一个单元格 1.11 使用和号符号 (&)
在 Excel 中,和号符号 & 通常用于连接文本。
示例:将名字(A 列)和姓氏(B 列)合并为全名
选择要放置合并结果的单元格,然后输入如下公式:
=A2&" "&B2
在该公式中,& 用于连接文本,A2 和 B2 是需要合并的两个文本," " 是分隔符(空格),用于在结果单元格中分隔两个文本。如果想用逗号作为分隔符,只需输入用双引号括起来的逗号 ","。
按 Enter 键获取合并结果,然后向下拖动自动填充柄以获得所有合并结果。
示例:将编号(第15 行)和姓名(第16 行)合并到一个单元格
如果要将行合并到一个单元格,只需根据需要更改单元格引用和分隔符,并向右拖动自动填充柄以获得所有合并结果。
1.12 使用 CONCATENATE 函数(适用于 Excel2016 或更早版本)
如果您使用的是 Excel2016 或更早版本,可以使用 CONCATENATE 函数来实现。
CONCATENATE语法说明 CONCATENATE (text1,[text2],…) 有关 CONCATENATE 函数的更多详情,请访问:CONCATENATE。
示例:将姓名(F 列)和地址(G 列)合并为一列
选择要放置合并结果的单元格,然后输入如下公式:
=CONCATENATE(F2,",",G2)
在该公式中,F2 和 G2 是需要合并的两个文本,"," 是分隔符(逗号),用于在结果单元格中分隔两个文本。如果想用空格作为分隔符,只需输入用双引号括起来的空格 " "。
按 Enter 键获取合并结果,然后向下拖动自动填充柄以获得所有合并结果。
如需合并行,只需根据需要更改单元格引用和分隔符,并向右拖动自动填充柄即可。
1.13 使用 CONCAT 函数或 TEXTJOIN 函数(适用于 Excel2019 或 Excel365)
如果您使用的是 Excel2019 或 Excel365,CONCAT 函数和 TEXTJOIN 函数可能是更好的选择。
CONCAT语法说明 CONCAT (text1,[text2],…) 有关 CONCAT 函数的更多详情,请访问:CONCAT。
CONCAT 函数的用法与 CONCATENATE 函数相同,例如将名字和姓氏分别在两列中合并为一列,公式如下:
=CONCAT(A21," ",B21)
在该公式中,A21 和 B21 是需要合并的两个文本," " 是分隔符(空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。
按 Enter 键获取合并结果,然后向下拖动自动填充柄以获得所有合并结果。
与合并列不同,合并行时,输入第一个公式后需要向右拖动自动填充柄,直到所有合并结果都生成。
TEXTJOIN语法说明 TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...) 有关 TEXTJOIN 函数的更多详情,请访问:TEXTJOIN。
使用 TEXTJOIN 合并列或行:
=TEXTJOIN(",",TRUE,E21:G21))
在该公式中,E21:G21 是需要合并的连续区域。" " 是分隔符(空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。逻辑值 TRUE 表示合并时忽略空单元格,如果需要包含空白,将 TRUE 替换为 FALSE。
按 Enter 键获取合并结果,然后向下拖动自动填充柄以获得所有合并结果。
忽略空白 包含空白 1.14 使用记事本(仅适用于合并列)
1. 使用记事本也可以实现合并列(不适用于合并行)。
选择要合并为一列的区域,按 Ctrl + C 键复制区域。
2. 打开 记事本, 然后按 Ctrl + V 将复制的区域粘贴到记事本中。
3. 在记事本中选择两个文本之间的制表符并按 Ctrl + H 启用 替换 功能,查找内容文本框中已自动填入制表符。 查找内容 文本框。
4. 在 替换为 文本框中输入要用作分隔符的内容,然后点击 全部替换。然后关闭 替换 对话框。
5.现在选中记事本中的文本,按 Ctrl + C 复制,然后回到 Excel,选择一个单元格并按 Ctrl + V 粘贴合并结果。
扩展:使用换行符作为分隔符将列/行合并到一个单元格中
如果您想将列或行合并到一个单元格,并以换行符分隔,如下图所示:
首先,您需要了解,在 Excel 中,CHAR() 函数可用于在公式中指定难以直接输入的字符,例如 CHAR(10) 返回换行符。
然后将 CHAR(10) 应用于上述公式中,实现以换行符为分隔符合并列或行:
和号符号:
=A49&CHAR(10)&B49
CONCATENATE 函数:
=CONCATENATE(A49,CHAR(10),B49)
CONCAT 函数
=CONCAT(A49,CHAR(10),B49)
TEXTJOIN 函数
=TEXTJOIN(CHAR(10),TRUE,A49:B49)
输入上述公式后,选中结果区域,点击 开始 > 自动换行.
现在,列已合并为一个单元格,并以换行符分隔。
如果只想将一列中的多行合并为一个单元格,Excel 的“两端对齐”功能可以帮您实现。选中包含多行的列,点击 开始 > 填充 > 两端对齐,则这些行会以空格为分隔符合并到该区域的首行单元格中。
1.2 合并列/行到一个单元格且不包含空白本部分介绍如何将列或行合并到一个单元格,并跳过空单元格,如下图所示:
1.21 使用 TEXTJOIN 函数(适用于 Excel2019 或 Excel365)
如果您使用的是 Excel2019 或 Excel365,幸运的是,新的 TEXTJOIN 函数可以轻松完成此操作。
CONCATENATE语法说明 TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...) 有关 TEXTJOIN 函数的更多详情,请访问:TEXTJOIN。
示例:将姓名(A 列)、编号(B 列)和域名(C 列)合并为一个单元格生成邮箱地址,其中部分编号可能为空。
选择用于放置合并结果的单元格,输入如下公式:
=TEXTJOIN("",TRUE,A2:C2)
在该公式中,A2:C2 是包含需要合并文本的区域,"" 是分隔符(无),用于分隔结果单元格中的文本。如果想用分隔符分隔文本,只需输入用双引号括起来的分隔符,如 ","。逻辑值 TRUE 表示合并时忽略空单元格,如需包含空白,将 TRUE 替换为 FALSE。
按 Enter 键获取第一个结果,然后根据需要向下或向右拖动自动填充柄生成所有结果。
1.22 使用和号符号 (&)
如果您使用的是 Excel2016 或更早版本,可用和号符号 &逐一连接文本,并手动跳过空白。
选择要放置合并结果的单元格,然后输入如下公式:
=A10&C10
在该公式中,& 用于连接文本,A10 和 C10 是需要合并的两个文本。如果想用逗号作为分隔符,只需输入用双引号括起来的逗号 ",",并用 &连接两个文本。
按 Enter 键获取合并结果。然后更改公式引用以获得下一个合并结果。
1.23 使用自定义函数
对于 Excel2016及更早版本用户,如果需要合并多列或多行且跳过空白,可以通过 VBA 创建自定义函数快速完成。
1. 按 Alt + F11 键打开 Microsoft Visual Basic for Applications 窗口。
2. 点击 插入 > 模块 插入新模块。
3. 将下方代码复制粘贴到新模块并保存。
VBA:合并单元格并跳过空单元格
Function Concatenatecells(ConcatArea As Range) As String 'updateby Extendoffice For Each n In ConcatArea: nn = IIf(n = "", nn & "", nn & n & "_"): Next Concatenatecells = Left(nn, Len(nn) - 1) End Function
4. 返回工作表,选择要放置合并结果的单元格,输入公式
=Concatenatecells(A15:C15)
在该公式中,A15:C15 是包含需要合并文本的区域。在 VBA代码中,"_" 表示用于分隔合并结果的分隔符,您可根据需要更改分隔符。
1.3 合并列/行/单元格到一个单元格且保留数据如果您已在 Excel 中安装 Kutools for Excel,“合并行/列/单元格并保留值”功能可以高效完成各种合并操作。
Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息... 免费试用...1.选择要合并的单元格以及用于放置合并结果的单元格。
2. 点击 Kutools > 合并拆分 > 合并行/列/单元格并保留值.
3. 在弹出的对话框中,按如下设置选项:
1)指定合并列、合并行或将所有单元格合并为一个。
合并列 示例 合并行 示例 合并到一个单元格 示例 2)为合并结果中的文本指定分隔符。
3)指定合并结果的位置(选择“合并到一个单元格”选项时此项不可用)
选择“合并列”选项时,可指定将结果放在所选区域的左边单元格或右边单元格。
左边单元格 示例 右边单元格 示例 选择“合并行”选项时,可指定将结果放在所选区域的上方单元格或下方单元格。
上方单元格 示例 下方单元格 示例 4)指定合并结果的操作方式。
4. 点击“确定”或“应用”完成合并。
保留这些单元格的内容 删除这些单元格的内容 合并这些单元格 有关此功能的更多详情,请访问合并列、行、单元格并保留值。
有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel。
如需 30 天免费试用 Kutools for Excel,请立即下载。
1.4 如果为空则合并两列有时,您可能希望在两列中有一列包含空白单元格时进行合并。假设有两列,A 列包含用户名且部分单元格为空,B 列包含姓名,合并时只需将 A 列中的空白单元格用 B 列对应内容填充,如下图所示:
1.41 使用 IF 函数
IF 函数用于判断特定条件。这里可以用 IF 函数判断单元格是否为空,然后用另一列的内容填充空白。
IF 函数语法说明 IF (logical_test, [value_if_true], [value_if_false]) 有关 IF 函数的更多详情,请访问:IF
选择要放置合并结果的列的首行单元格,复制或输入以下公式:
=IF(A2="",B2,A2)
然后按 Enter 键获取第一个结果,然后向下拖动自动填充柄获得所有结果。
现在,A 列中的空白单元格已用 B 列中的内容填充。
1.42 使用 VBA
下面的 VBA代码也可以实现该操作。
1. 按 Alt + F11 键打开 Microsoft Visual Basic for Applications 窗口,然后点击插入 > 模块创建新空白模块。
2. 将下方代码复制粘贴到新模块。
VBA:如果为空则合并两列
Sub MergebyBlank() 'UpdatebyExtendoffice20220506 Dim xRg1, xRg2, xRgUser As Range Dim xRg As Range Dim xWsh As Worksheet Dim xCount, xFNum As Integer Set xRg1 = Range("A:A") Set xRg2 = Range("B:B") Set xWsh = xRg1.Worksheet Set xRgUser = xWsh.UsedRange Set xRg1 = Intersect(xRgUser, xRg1) Set xWsh = xRg2.Worksheet Set xRgUser = xWsh.UsedRange Set xRg2 = Intersect(xRgUser, xRg2) xCount = xRg1.Count If (xCount > xRg2.Count) Then xCount = xRg2.Count End If For xFNum = 1 To xCount If (xRg1.Item(xFNum).Value = "") Then If (xRg2.Item(xFNum).Value <> "") Then xRg1.Item(xFNum).Value = xRg2.Item(xFNum).Value End If ElseIf (xRg2.Item(xFNum).Value = "") Then If (xRg1.Item(xFNum).Value <> "") Then xRg2.Item(xFNum).Value = xRg1.Item(xFNum).Value End If End If Next End Sub
在代码中,A:A 和 B:B 是将要合并的两列,可根据需要更改。
3. 然后按 F5 键或点击 运行 按钮,则如果 A 列为空,将用 B 列的值填充 A 列。
2 合并具有相同 ID 的行假设有一个包含多列的表格,其中一列为 ID,且有重复项。现在本教程提供基于相同 ID 合并表格行并进行计算的方法。
2.1 将具有相同 ID 的行合并,并用逗号或其他分隔符分隔本部分介绍如何将具有相同 ID 的行合并,并用逗号分隔,如下图所示:
2.11 使用 VBA
这里提供一段 VBA代码可实现该操作
1. 按 Alt + F11 键打开 Microsoft Visual Basic for Applications 窗口,然后点击插入 > 模块创建新空白模块。
2. 将下方代码复制粘贴到新模块。
VBA:合并具有相同 ID 的行
Sub Combine_Rows() 'UpdatebyExtendoffice20220506 Dim xRg As Range Dim xRows As Long Dim I As Long, J As Long, K As Long On Error Resume Next Set xRg = Application.InputBox("Select Range:", "Kutools For Excel", Selection.Address, , , , , 8) Set xRg = Range(Intersect(xRg, ActiveSheet.UsedRange).Address) If xRg Is Nothing Then Exit Sub xRows = xRg.Rows.Count For I = xRows To 2 Step -1 For J = 1 To I - 1 If xRg(I, 1).Value = xRg(J, 1).Value And J <> I Then For K = 2 To xRg.Columns.Count If xRg(J, K).Value <> "" Then If xRg(I, K).Value = "" Then xRg(I, K) = xRg(J, K).Text Else xRg(I, K) = xRg(I, K).Text & "," & xRg(J, K).Text 'here uses comma as separator, you can change it to others as you need End If End If Next xRg(J, 1).EntireRow.Delete I = I - 1 J = J - 1 End If Next Next ActiveSheet.UsedRange.Columns.AutoFit End Sub
3. 然后按 F5 键或点击 运行 按钮,此时会弹出 Kutools for Excel 对话框,供您选择需要按相同 ID 合并行的表格。
4. 点击 OK。现在所选表格已按相同 ID 合并行。
2.12 使用 IF 函数添加辅助列
如果只有两列,且希望将具有相同 ID 的行合并,另一列的值用逗号分隔,如下图所示,可用 IF 函数实现。
1. 将 ID 按升序排序。选中 ID 列,点击 数据 > 升序排序.
2. 在 排序警告 对话框中,勾选 展开 选区选项,点击 排序.
现在相同 ID 已经排在一起。
3. 在相邻列中,使用如下 IF 函数:
=IF(A17=A18,C17&", "&B18,B18)
在该公式中,A17 和 A18 是 ID 列的两个相邻单元格(A17 为 ID 列标题),B18 为 A18 对应的单元格。", " 表示用逗号分隔值。可根据需要更改引用和分隔符。
4. 按 Enter 键获取第一个结果,然后向下拖动自动填充柄获得所有结果。
5. 在相邻列输入如下公式:
=IF(A18<>A19,"Merged","")
在该公式中,A18 和 A19 是 ID 列的两个相邻单元格,若不相等则返回 "Merged",否则返回空。
6. 按 Enter 键获取第一个结果,然后向下拖动自动填充柄获得所有结果。
7.选中最后一列(含标题),点击 数据 > 筛选.
8. 点击 筛选 按钮,勾选 Merged 复选框,点击 OK.
现在只筛选出已合并的行,复制筛选后的数据粘贴到其他位置即可。
有关 IF 函数的更多详情,请访问:IF。
2.13 使用实用工具 – 高级合并行如果您已在 Excel 中安装 Kutools for Excel,高级合并行功能可轻松完成此操作。
Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息... 免费试用...1.选中表格后点击 Kutools > 合并拆分 > 高级合并行.
2. 在高级合并行对话框中,请按如下操作:
1)选择 ID 列,并设置为主键;
2)选择要合并的列,点击“汇总”并选择分隔符。
3)点击 确定.
现在,行已按相同 ID 合并。
高级合并行功能会破坏原始数据,使用前请先保存数据副本。
有关此功能的更多详情,请访问高级合并行。
有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel。
如需 30 天免费试用 Kutools for Excel,请立即下载。
2.2 合并具有相同 ID 的行并进行计算如果您希望将具有相同 ID 的行合并后进行求和或其他计算,如下图所示,可参考以下方法。
2.21 使用合并计算功能
如果只有两列,一列为文本(ID),另一列为需要计算的数值(如求和),可用 Excel 内置的合并计算功能实现。
1.选择要放置合并结果的单元格,点击 数据 > 合并计算.
2. 在合并计算对话框中,按如下操作:
1)根据需要选择函数;
2)点击箭头选择表格;
3)点击“添加”将所选区域添加到所有引用列表;
4)勾选“首行”和“最左列”复选框;
5)点击 OK.
现在表格已按相同 ID 求和。
2.22 使用 VBA
下面的 VBA也可以将具有相同 ID 的行合并并求和。
1. 按 Alt + F11 键打开 Microsoft Visual Basic for Applications 窗口,然后点击 插入 > 模块 创建新空白模块。
2. 在新模块中复制粘贴下方 VBA代码。
VBA:合并重复行并求和
Sub CombineRows()
'Updateby Extendoffice
Dim WorkRng As Range
Dim Dic As Variant
Dim arr As Variant
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Set Dic = CreateObject("Scripting.Dictionary")
arr = WorkRng.Value
For i = 1 To UBound(arr, 1)
Dic(arr(i, 1)) = Dic(arr(i, 1)) + arr(i, 2)
Next
Application.ScreenUpdating = False
WorkRng.ClearContents
WorkRng.Range("A1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.keys)
WorkRng.Range("B1").Resize(Dic.Count, 1) = Application.WorksheetFunction.Transpose(Dic.items)
Application.ScreenUpdating = True
End Sub3. 然后按 F5 键或点击 运行 按钮,弹出对话框选择要使用的表格,然后点击 OK.
现在所选区域已按相同值合并并求和。
该 VBA 会破坏原始数据,使用前请先保存数据副本。
2.23 使用实用工具 – 高级合并行
如果表格有两列以上且需合并并计算,例如有三列,第一列为需合并的重复产品名,第二列为需合并并用逗号分隔的门店名,最后一列为需按重复行求和的数值,如下图所示,Kutools for Excel 的高级合并行功能可帮您实现。
1.选中表格后点击 Kutools > 合并拆分 > 高级合并行.
2. 在高级合并行对话框中,请按如下操作:
1)选择 ID 列,并设置为主键;
2)选择要合并的列,点击“汇总”并选择分隔符。
3)选择要计算的列,点击“计算”并选择一种计算方式。
4)点击 确定.
现在,行已按相同行合并并完成计算。
高级合并行功能会破坏原始数据,使用前请先保存数据副本。
有关此功能的更多详情,请访问高级合并行。
有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel。
如需 30 天免费试用 Kutools for Excel,请立即下载。
2.3 合并相邻且值相同的行如果有一个包含多列的表格,其中一列有重复值,现在需要将该列中相邻且值相同的行合并,如下图所示,如何实现?
2.31 使用 VBA
在 Excel 中没有内置功能可直接实现此操作,但可通过 VBA 实现。
1. 按 Alt + F11 键打开 Microsoft Visual Basic for Applications 窗口,然后点击插入 > 模块创建新空白模块。
2. 在新模块中复制粘贴下方 VBA代码。
VBA:合并相邻且值相同的行
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 键或点击 运行 按钮启用该 VBA,弹出对话框选择要使用的表格,然后点击 OK.
现在,第一列中相邻且值相同的行已在所选区域合并。
该 VBA 会破坏原始数据,使用前请先保存数据副本。且该 VBA 会合并所选表格第一列中相同的值。
2.32 使用实用工具 – 合并相同单元格
如果您已在 Excel 中安装 Kutools for Excel,其“合并相同单元格”功能可一步完成此操作。
Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息... 免费试用...选择要合并相同值的列,然后点击 Kutools > 合并拆分 > 合并相同单元格.
现在,相邻且值相同的单元格已被合并。
如果您想取消合并并填充值,可使用 取消合并单元格并填充值 功能。
有关此功能的更多详情,请访问合并相同单元格。
有关此功能的更多详情,请访问取消合并单元格。
有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel。
如需 30 天免费试用 Kutools for Excel,请立即下载。
3 合并单元格 3.1. 将多行多列合并到一个单元格中如需将多行多列的区域合并为一个单元格,这里提供四种方法。
示例:合并区域 A1:C3
3.11 使用和号符号 (&)
在 Excel 中,和号符号 & 通常用于连接文本。
选择要放置合并结果的单元格,然后输入如下公式:
=A1&", "&B1&", "&C1&", "&A2&", " &B2&", "&C2&", "&A3&", "&B3&", "&C3
在该公式中,& 用于连接文本,", " 是分隔符(逗号+空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。
按 Enter 键获取合并结果。
3.12 使用 CONCATENATE 函数(适用于 Excel2016 或更早版本)
如果您使用的是 Excel2016 或更早版本,可以使用 CONCATENATE 函数来实现。
CONCATENATE语法说明 CONCATENATE (text1,[text2],…) 有关 CONCATENATE 函数的更多详情,请访问:CONCATENATE
选择要放置合并结果的单元格,然后输入如下公式:
=CONCATENATE(A1,", ",B1,", ",C1,", ",A2,", ",B2,", ",C2,", ",A3,", ",B3,", ",C3)
在该公式中,A1、B1…、C3 是要合并的文本,", " 是分隔符(逗号+空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。
然后按 Enter 键获取合并结果。
3.13 使用 CONCAT 函数或 TEXTJOIN 函数(适用于 Excel2019 或 Excel365)
如果您使用的是 Excel2019 或 Excel365,CONCAT 函数和 TEXTJOIN 函数可能是更好的选择。
CONCAT语法说明 CONCAT (text1,[text2],…) 有关 CONCAT 函数的更多详情,请访问:CONCAT。
CONCAT 函数的用法与 CONCATENATE 函数相同,例如将名字和姓氏分别在两列中合并为一列,公式如下:
=CONCAT(A1,", ",B1,", ",C1,", ",A2,", ",B2,", ",C2,", ",A3,", ",B3,", ",C3)
在该公式中,A1、B1…、C3 是要合并的文本,", " 是分隔符(逗号+空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。
然后按 Enter 键获取合并结果。
TEXTJOIN语法说明 TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...) 有关 TEXTJOIN 函数的更多详情,请访问:TEXTJOIN。
使用 TEXTJOIN 合并列或行:
=TEXTJOIN(", ",TRUE,A1:C3)
在该公式中,A1:C3 是需要合并的连续区域,", " 是分隔符(逗号+空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。逻辑值 TRUE 表示合并时忽略空单元格,如需包含空白,将 TRUE 替换为 FALSE。
然后按 Enter 键获取合并结果。
如需用换行符作为分隔符,可在公式中使用 CHAR(10),如 =TEXTJOIN(CHAR(10),TRUE,A1:C3),然后将结果单元格设置为自动换行。
3.14 使用“合并行/列/单元格并保留值”功能
如果您已在 Excel 中安装 Kutools for Excel,其“合并行/列/单元格并保留值”功能可快速完成此操作。
1.选择要合并为一个单元格的区域,然后点击 Kutools > 合并拆分 > 合并行/列/单元格并保留值.
2. 在弹出的对话框中,勾选 合并到一个单元格 并根据需要指定分隔符,然后点击 确定.
现在,所有单元格内容已用指定分隔符合并到一个单元格。如果内容过多无法完全显示,可点击 自动换行 在 开始 选项卡下显示全部内容。
有关此功能的更多详情,请访问合并列、行、单元格并保留值。
有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel。
如需 30 天免费试用 Kutools for Excel,请立即下载。
3.2 合并多行多列为单列/单行 转置单元格为一列 转置单元格为一行 3.21 命名区域并使用 INDEX 函数(仅适用于合并为单列)
如需将区域转置为单列,可先命名区域,再用 INDEX 函数实现。
1.选择区域,右键打开菜单,点击 定义名称.
2. 在弹出的 新建名称 对话框中,在 名称 文本框输入名称,点击 OK.
3. 命名区域后,选择放置转置数据的单元格,使用如下 INDEX 函数:
=INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1)
有关 INDEX 函数的更多详情,请点击此处。
4. 按 Enter 键后向下拖动自动填充柄,直到出现 #REF! 错误值。
5. 删除错误值,区域已合并为一列。
3.22 VBA(仅适用于单列)
如需将单元格合并为一列,也可用 VBA 实现。
1. 按 Alt + F11 键打开 Microsoft Visual Basic for Applications 窗口,然后点击插入 > 模块创建新空白模块。
2. 将下方 VBA代码复制粘贴到空白模块。
VBA:将区域转换为一列
Sub ConvertRangeToColumn()
'UpdatebyExtendoffice
Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
xTitleId = "KutoolsforExcel"
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)
rowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Rows
Rng.Copy
Range2.Offset(rowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
rowIndex = rowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
3. 然后按 F5 键或点击 运行 按钮,弹出对话框选择区域,点击 OK.
4. 再弹出对话框选择放置结果的单元格,点击 OK.
3.23 使用实用工具 – 转换区域
如需将单元格合并为一行,Excel 无内置功能支持。但若已安装 Kutools for Excel,其“转换区域”功能支持将区域转换为单列或单行,也支持将行或列转换为区域。
Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息... 免费试用...1.选择区域,点击 Kutools > 区域 > 转换区域.
2. 在 转换区域 对话框中,勾选 区域转单列 或 区域转单行 选项,根据需要点击 OK.
3. 弹出对话框选择放置结果的单元格,点击 OK.
现在区域已转换为一行或一列。
有关此功能的更多详情,请访问转换区域。
有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel。
如需 30 天免费试用 Kutools for Excel,请立即下载。
3.3 将多列堆叠为一列且不重复如果表格中有多列且存在重复值,如何将多列堆叠为一列且只保留唯一值,如下图所示?
本部分提供三种不同方法解决此问题。
3.31复制粘贴并删除重复值
在 Excel 中,常规方法是逐列复制粘贴,然后删除重复值。
1.选择第一列,按 Ctrl + C 键复制,然后选择目标单元格,按 Ctrl + V 键。
2. 重复第1 步,将其他列依次复制粘贴到第一列下方。
3.选中堆叠后的列,点击 数据 > 删除重复值,在 删除重复值 对话框中勾选列名,点击 OK.
4. 弹出对话框提示已删除重复值,点击 OK 关闭后,堆叠列只保留唯一值。
如果有上百列,逐一复制粘贴非常耗时。但如果您已安装 Kutools for Excel ,可用 转换区域 功能快速将区域转换为一列,再用 Excel 的 删除重复值 功能。
选择要堆叠的列区域,点击 Kutools > 区域 > 转换区域.
然后勾选 区域转单列 选项,点击 OK 选择放置堆叠列的单元格。
然后用“删除重复值”功能去除重复值。
有关此功能的更多详情,请访问转换区域。
有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel。
如需 30 天免费试用 Kutools for Excel,请立即下载。
3.32 使用 VBA
此外,还可用 VBA代码解决此问题。
1. 按 Alt + F11 键打开 Microsoft Visual Basic for Applications 窗口,然后点击插入 > 模块创建新空白模块。
2. 将下方代码复制粘贴到新模块。
VBA:将多列堆叠为一列且不重复
Sub FindUniques()
'UpdatebyExtendoffice
Dim rng As Range
Dim InputRng As Range, OutRng As Range
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set dic = CreateObject("Scripting.Dictionary")
For j = 1 To InputRng.Columns.Count
For i = 1 To InputRng.Rows.Count
xValue = InputRng.Cells(i, j).Value
If xValue <> "" And Not dic.Exists(xValue) Then
OutRng.Value = xValue
dic(xValue) = ""
Set OutRng = OutRng.Offset(1, 0)
End If
Next
Next
End Sub
3. 然后按 F5 键或点击 运行 按钮,弹出对话框选择要堆叠的列,点击 OK。
4. 第二个弹出对话框选择目标单元格,点击 OK.
现在,所有列已堆叠为一列且只保留唯一值。
3.4. 合并单元格并保留格式如果有两列,其中一列为特殊格式(如自定义日期时间 mm/dd/yyyy),用常规方法合并后格式会丢失,如下图所示:
本部分将介绍几种合并单元格并保留格式的方法。
3.41 在公式中嵌入 TEXT 函数
TEXT 函数用于将数字按指定格式转换为文本。这里可先用 TEXT 函数将包含数字的单元格转换为指定格式,再用“&”、CONCATENATE、CONCAT 或 TEXTJOIN 函数与其他单元格合并。
关于常规合并单元格的方法,请返回1.1。
TEXT 函数语法说明 TEXT (value, format_text) 有关 TEXT 函数的更多详情,请访问 TEXT 函数。
以下以在 CONCAT 函数中嵌入 TEXT 函数为例。
请将下方公式复制粘贴到要放置合并结果的单元格:
=CONCAT(TEXT(A2,"mm/dd/yyyy hh:mm")," ",B2)
在该公式中,A2 为需保留格式的单元格,“mm/dd/yyyy hh:mm”为所用格式,B2 为需合并的其他单元格。" " 表示用空格分隔。可根据需要更改引用、格式和分隔符。
按 Enter 键并向下拖动自动填充柄,填充所有单元格。
3.42 使用 Microsoft Word
1.选中要合并的表格,按 Ctrl + C 复制。
2. 打开空白 Word 文档,按 Ctrl + V 粘贴,然后点击文档中的表格,此时表格右上角出现十字图标。
3. 点击 布局 选项卡,然后点击 转换为文本 在 数据 分组,在弹出的 转换表格为文本 对话框中,指定列分隔符。点击 OK.
现在 Word 中的表格内容已转换为文本。
4.选中转换后的文本,按 Ctrl + C 复制,回到 Excel选中空白单元格,按 Ctrl + V 粘贴合并结果。
3.43 使用实用工具 – 合并并保留数据
最高效的方法是使用 Kutools for Excel 的“合并行/列/单元格并保留值”功能,应用时只需勾选“使用格式化后的值”选项,合并结果即可保留数据格式。
1.选中包含结果单元格的表格,点击 Kutools > 合并拆分 > 合并行/列/单元格并保留值.
2. 在弹出的对话框中,根据需要指定合并操作,并取消勾选 使用格式化后的值 复选框(默认已勾选)。点击 确定.
现在数据已合并并保留格式。
有关此功能的更多详情,请访问合并列、行、单元格并保留值。
有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel。
如需 {module745} 天免费试用 Kutools for Excel,请立即下载。
3.5 合并单元格生成日期假设有一个表格,年份、月份和日期分别在不同列中,需要将这些列合并生成日期,如下图所示:
3.51 使用 DATE 函数
DATE 函数用于根据年、月、日生成日期。
DATE 函数语法说明 DATE( year, month, day ) 有关 DATE 函数的更多详情,请访问 DATE 函数。
将下方公式复制粘贴到要放置日期的单元格:
=DATE(A2,B2,C2)
在该公式中,A2、B2 和 C2 分别为包含年份、月份和日期的单元格。
按 Enter 键获取第一个日期,然后向下拖动自动填充柄获得所有日期。
更多 Excel 教程:合并多个工作簿/工作表为一个本教程,几乎涵盖所有可能遇到的合并场景,并为您提供专业解决方案。
拆分文本、数字和日期单元格(分列)本教程分为三部分:拆分文本单元格、拆分数字单元格和拆分日期单元格,每部分均提供不同示例,帮助您应对类似拆分问题。
在 Excel 中合并多个单元格内容且不丢失数据本教程聚焦于按单元格中特定位置提取内容,并收集多种方法,帮助您按指定位置提取文本或数字。
在 Excel 中比较两列的匹配与差异本文涵盖了比较两列时可能遇到的大多数场景,希望对您有所帮助。
最佳的办公生产力工具Kutools for Excel 解决您的大部分问题,并将您的生产力提高 80% 超级公式栏(轻松编辑多行文本和公式);阅读布局(轻松读取和编辑大量单元格);粘贴到筛选区域... 合并单元格/行/列并保留数据;拆分单元格内容;合并重复行并求和/平均值... 防止重复单元格;比较区域... 选择重复或唯一行;选择空白行(所有单元格为空);在多个工作簿中进行超级查找和模糊查找;随机选择... 精准复制多个单元格而不改变公式引用;自动创建对多个工作表的引用;插入项目符号、复选框等... 收藏并快速插入公式、区域、图表和图片;用密码加密单元格;创建邮件列表并发送电子邮件... 提取文本,添加文本,按位置删除,删除空格;创建并打印分页小计;在单元格内容和批注之间转换... 超级筛选(保存并应用筛选方案到其他工作表);按月/周/日高级排序,频率等;按粗体、斜体特殊筛选... 合并工作簿和工作表;基于关键列汇总表格;将数据分割到多个工作表;批量转换 xls、xlsx 和 PDF... 数据透视表按周数、星期几等分组... 用不同颜色显示未锁定、已锁定单元格;高亮显示包含公式的单元格/名称... 了解更多... 全功能 30 天免费试用... 购买... Office Tab - 为 Office 带来标签式界面,让您的工作更加轻松 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读。 在同一窗口的新标签页中打开和创建多个文档,而不是在新窗口中。 将您的生产力提高 50%,每天为您减少数百次鼠标点击! 了解更多... 全功能 30 天免费试用... 购买...