跳至主要内容

Excel 教程:合并列、行、单元格

Author: Sun Last Modified: 2025-07-31

在日常 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代码或公式时根据需要更改引用,或者直接下载示例文件尝试相关方法。

doc sample点击下载示例文件


1 合并列/行到一个单元格

1.1 使用空格、逗号或其他分隔符将列/行合并到一个单元格中

在 Excel 中,将列或行合并到一个单元格并用逗号、空格或其他分隔符分隔结果(如下图所示)是最常见的操作。

将列合并到一个单元格
combine columns into one cell
将行合并到一个单元格
Combine rows into one cell

1.11 使用和号符号 (&)

在 Excel 中,和号符号 & 通常用于连接文本。

示例:将名字(A 列)和姓氏(B 列)合并为全名

选择要放置合并结果的单元格,然后输入如下公式:

=A2&" "&B2

info icon在该公式中,& 用于连接文本,A2 和 B2 是需要合并的两个文本," " 是分隔符(空格),用于在结果单元格中分隔两个文本。如果想用逗号作为分隔符,只需输入用双引号括起来的逗号 ","。

Enter 键获取合并结果,然后向下拖动自动填充柄以获得所有合并结果。

示例:将编号(第15 行)和姓名(第16 行)合并到一个单元格

如果要将行合并到一个单元格,只需根据需要更改单元格引用和分隔符,并向右拖动自动填充柄以获得所有合并结果。
 use ampersand symbol to combine rows

1.12 使用 CONCATENATE 函数(适用于 Excel2016 或更早版本)

如果您使用的是 Excel2016 或更早版本,可以使用 CONCATENATE 函数来实现。

CONCATENATE语法说明
CONCATENATE (text1,[text2],…)

有关 CONCATENATE 函数的更多详情,请访问:CONCATENATE

示例:将姓名(F 列)和地址(G 列)合并为一列

选择要放置合并结果的单元格,然后输入如下公式:

=CONCATENATE(F2,",",G2)

info icon在该公式中,F2 和 G2 是需要合并的两个文本,"," 是分隔符(逗号),用于在结果单元格中分隔两个文本。如果想用空格作为分隔符,只需输入用双引号括起来的空格 " "。

Enter 键获取合并结果,然后向下拖动自动填充柄以获得所有合并结果。
use CONCATENATE function to combine columns

如需合并行,只需根据需要更改单元格引用和分隔符,并向右拖动自动填充柄即可。
use CONCATENATE function to combine rows

1.13 使用 CONCAT 函数或 TEXTJOIN 函数(适用于 Excel2019 或 Excel365)

如果您使用的是 Excel2019 或 Excel365,CONCAT 函数和 TEXTJOIN 函数可能是更好的选择。

CONCAT语法说明
CONCAT (text1,[text2],…)

有关 CONCAT 函数的更多详情,请访问:CONCAT

CONCAT 函数的用法与 CONCATENATE 函数相同,例如将名字和姓氏分别在两列中合并为一列,公式如下:

=CONCAT(A21," ",B21)

info icon在该公式中,A21 和 B21 是需要合并的两个文本," " 是分隔符(空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。

按 Enter 键获取合并结果,然后向下拖动自动填充柄以获得所有合并结果。
use CONCAT function to combine columns

与合并列不同,合并行时,输入第一个公式后需要向右拖动自动填充柄,直到所有合并结果都生成。

TEXTJOIN语法说明
TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...)

有关 TEXTJOIN 函数的更多详情,请访问:TEXTJOIN

使用 TEXTJOIN 合并列或行:

=TEXTJOIN(",",TRUE,E21:G21))

info icon在该公式中,E21:G21 是需要合并的连续区域。" " 是分隔符(空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。逻辑值 TRUE 表示合并时忽略空单元格,如果需要包含空白,将 TRUE 替换为 FALSE。

按 Enter 键获取合并结果,然后向下拖动自动填充柄以获得所有合并结果。

忽略空白
use TEXTJOIN function to combine columns ignoring blanks
包含空白
use TEXTJOIN function to combine columns including blanks

1.14 使用记事本(仅适用于合并列)

1. 使用记事本也可以实现合并列(不适用于合并行)。

选择要合并为一列的区域,按 Ctrl + C 键复制区域。
copy the data range

2. 打开 记事本, 然后按 Ctrl + V 将复制的区域粘贴到记事本中。
Open a Notepad and paste the data

3. 在记事本中选择两个文本之间的制表符并按 Ctrl + H 启用 替换 功能,查找内容文本框中已自动填入制表符。 查找内容 文本框。
press Ctrl + H to enable Replace feature

4. 在 替换为 文本框中输入要用作分隔符的内容,然后点击 全部替换。然后关闭 替换 对话框。
type the delimiter to separate the combined texts in the replace textbox

5.现在选中记事本中的文本,按 Ctrl + C 复制,然后回到 Excel,选择一个单元格并按 Ctrl + V 粘贴合并结果。
copy and paste the data back to Excel filethe columns are combined into one cell

扩展:使用换行符作为分隔符将列/行合并到一个单元格中

如果您想将列或行合并到一个单元格,并以换行符分隔,如下图所示:
combine columns or rows into one cell with a line break

首先,您需要了解,在 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)

输入上述公式后,选中结果区域,点击 开始 > 自动换行.
click Home > Wrap Text

现在,列已合并为一个单元格,并以换行符分隔。
the columns are combined into one and separated by a line break

tip icon 如果只想将一列中的多行合并为一个单元格,Excel 的“两端对齐”功能可以帮您实现。选中包含多行的列,点击 开始 > 填充 > 两端对齐,则这些行会以空格为分隔符合并到该区域的首行单元格中。

click Home > Fill > Justify the rows are combined into the top cell with space

1.2 合并列/行到一个单元格且不包含空白

本部分介绍如何将列或行合并到一个单元格,并跳过空单元格,如下图所示:
combine columns or rows and skip empty cells

1.21 使用 TEXTJOIN 函数(适用于 Excel2019 或 Excel365)

如果您使用的是 Excel2019 或 Excel365,幸运的是,新的 TEXTJOIN 函数可以轻松完成此操作。

CONCATENATE语法说明
TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...)

有关 TEXTJOIN 函数的更多详情,请访问:TEXTJOIN

示例:将姓名(A 列)、编号(B 列)和域名(C 列)合并为一个单元格生成邮箱地址,其中部分编号可能为空。

选择用于放置合并结果的单元格,输入如下公式:

=TEXTJOIN("",TRUE,A2:C2)

info icon 在该公式中,A2:C2 是包含需要合并文本的区域,"" 是分隔符(无),用于分隔结果单元格中的文本。如果想用分隔符分隔文本,只需输入用双引号括起来的分隔符,如 ","。逻辑值 TRUE 表示合并时忽略空单元格,如需包含空白,将 TRUE 替换为 FALSE。

Enter 键获取第一个结果,然后根据需要向下或向右拖动自动填充柄生成所有结果。
TEXTJOIN function to combine columns skip blank cells

1.22 使用和号符号 (&)

如果您使用的是 Excel2016 或更早版本,可用和号符号 &逐一连接文本,并手动跳过空白。

选择要放置合并结果的单元格,然后输入如下公式:

=A10&C10

info icon 在该公式中,& 用于连接文本,A10 和 C10 是需要合并的两个文本。如果想用逗号作为分隔符,只需输入用双引号括起来的逗号 ",",并用 &连接两个文本。

Enter 键获取合并结果。然后更改公式引用以获得下一个合并结果。
ampersand symbol to combine columns skip blank cells

1.23 使用自定义函数

对于 Excel2016及更早版本用户,如果需要合并多列或多行且跳过空白,可以通过 VBA 创建自定义函数快速完成。

1. 按 Alt + F11 键打开 Microsoft Visual Basic for Applications 窗口。

2. 点击 插入 > 模块 插入新模块。
Click Insert > Module to insert a new module

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

copy and paste the code into the module

4. 返回工作表,选择要放置合并结果的单元格,输入公式

=Concatenatecells(A15:C15)

info icon 在该公式中,A15:C15 是包含需要合并文本的区域。在 VBA代码中,"_" 表示用于分隔合并结果的分隔符,您可根据需要更改分隔符。
enter a formula to get the result


1.3 合并列/行/单元格到一个单元格且保留数据

如果您已在 Excel 中安装 Kutools for Excel,“合并行/列/单元格并保留值”功能可以高效完成各种合并操作。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

1.选择要合并的单元格以及用于放置合并结果的单元格。
Select the cells to combine and the cells to place the combined results

2. 点击 Kutools > 合并拆分 > 合并行/列/单元格并保留值.
click Combine Rows, Columns or Cells without Losing Data feature

3. 在弹出的对话框中,按如下设置选项:
set options in the dialog box

1)指定合并列、合并行或将所有单元格合并为一个。

合并列 示例 合并行 示例 合并到一个单元格 示例
Combine columns Combine rows Combine into single cell

2)为合并结果中的文本指定分隔符。

3)指定合并结果的位置(选择“合并到一个单元格”选项时此项不可用)

选择“合并列”选项时,可指定将结果放在所选区域的左边单元格或右边单元格。

左边单元格 示例 右边单元格 示例
put the combined result to left cell put the combined result to right cell

选择“合并行”选项时,可指定将结果放在所选区域的上方单元格或下方单元格。

上方单元格 示例 下方单元格 示例
put the combined result to top cell put the combined result to bottom cell

4)指定合并结果的操作方式。

4. 点击“确定”或“应用”完成合并。

保留这些单元格的内容
Keep contents of combined cells
删除这些单元格的内容
Delete contents of combined cells
合并这些单元格
Merge the combined cells

有关此功能的更多详情,请访问合并列、行、单元格并保留值

有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel

如需 30 天免费试用 Kutools for Excel,请立即下载


1.4 如果为空则合并两列

有时,您可能希望在两列中有一列包含空白单元格时进行合并。假设有两列,A 列包含用户名且部分单元格为空,B 列包含姓名,合并时只需将 A 列中的空白单元格用 B 列对应内容填充,如下图所示:
Combine two columns if blank

1.41 使用 IF 函数

IF 函数用于判断特定条件。这里可以用 IF 函数判断单元格是否为空,然后用另一列的内容填充空白。

IF 函数语法说明
IF (logical_test, [value_if_true], [value_if_false])

有关 IF 函数的更多详情,请访问:IF

选择要放置合并结果的列的首行单元格,复制或输入以下公式:

=IF(A2="",B2,A2)

然后按 Enter 键获取第一个结果,然后向下拖动自动填充柄获得所有结果。
use IF function to combine two columns if blank

现在,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 

copy and paste the code into the module

info icon在代码中,A:A 和 B:B 是将要合并的两列,可根据需要更改。

3. 然后按 F5 键或点击 运行 run button按钮,则如果 A 列为空,将用 B 列的值填充 A 列。


2 合并具有相同 ID 的行

假设有一个包含多列的表格,其中一列为 ID,且有重复项。现在本教程提供基于相同 ID 合并表格行并进行计算的方法。
sample data

2.1 将具有相同 ID 的行合并,并用逗号或其他分隔符分隔

本部分介绍如何将具有相同 ID 的行合并,并用逗号分隔,如下图所示:
Combine rows with same ID and separated by comma

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

copy and paste the code into the module

3. 然后按 F5 键或点击 运行 run button按钮,此时会弹出 Kutools for Excel 对话框,供您选择需要按相同 ID 合并行的表格。
select a table that needs to be combined rows with the same ID

4. 点击 OK。现在所选表格已按相同 ID 合并行。

2.12 使用 IF 函数添加辅助列

如果只有两列,且希望将具有相同 ID 的行合并,另一列的值用逗号分隔,如下图所示,可用 IF 函数实现。
combine the rows with the same ID, and another column values separated by a comma

1. 将 ID 按升序排序。选中 ID 列,点击 数据 > 升序排序.
Data > Sort A to Z

2. 在 排序警告 对话框中,勾选 展开 选区选项,点击 排序.
check Expand the selection option, and click Sort

现在相同 ID 已经排在一起。
the same IDs have been sorted together

3. 在相邻列中,使用如下 IF 函数:

=IF(A17=A18,C17&", "&B18,B18)

info icon在该公式中,A17 和 A18 是 ID 列的两个相邻单元格(A17 为 ID 列标题),B18 为 A18 对应的单元格。", " 表示用逗号分隔值。可根据需要更改引用和分隔符。

4. 按 Enter 键获取第一个结果,然后向下拖动自动填充柄获得所有结果。
enter a fromula to get the result

5. 在相邻列输入如下公式:

=IF(A18<>A19,"Merged","")

info icon在该公式中,A18 和 A19 是 ID 列的两个相邻单元格,若不相等则返回 "Merged",否则返回空。

6. 按 Enter 键获取第一个结果,然后向下拖动自动填充柄获得所有结果。
enter a formula to check the merged cells

7.选中最后一列(含标题),点击 数据 > 筛选.
 click Data > Filter

8. 点击 筛选 按钮,勾选 Merged 复选框,点击 OK.
tick Merged checkbox in Filter list

现在只筛选出已合并的行,复制筛选后的数据粘贴到其他位置即可。
copy the filtered data and paste to other place

有关 IF 函数的更多详情,请访问:IF

2.13 使用实用工具 – 高级合并行

如果您已在 Excel 中安装 Kutools for Excel,高级合并行功能可轻松完成此操作。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

1.选中表格后点击 Kutools > 合并拆分 > 高级合并行.
click Advanced Combine Rows feature of kutools

2. 在高级合并行对话框中,请按如下操作:

1)选择 ID 列,并设置为主键;

2)选择要合并的列,点击“汇总”并选择分隔符。

3)点击 确定.

现在,行已按相同 ID 合并。
the rows have been combined by the same ID

高级合并行功能会破坏原始数据,使用前请先保存数据副本。

有关此功能的更多详情,请访问高级合并行

有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel

如需 30 天免费试用 Kutools for Excel,请立即下载

2.2 合并具有相同 ID 的行并进行计算

如果您希望将具有相同 ID 的行合并后进行求和或其他计算,如下图所示,可参考以下方法。
Combine rows with same ID and do some calculations

2.21 使用合并计算功能

如果只有两列,一列为文本(ID),另一列为需要计算的数值(如求和),可用 Excel 内置的合并计算功能实现。

1.选择要放置合并结果的单元格,点击 数据 > 合并计算.
click Data > Consolidate

2. 在合并计算对话框中,按如下操作:

1)根据需要选择函数;

2)点击箭头选择表格;

3)点击“添加”将所选区域添加到所有引用列表;

4)勾选“首行”和“最左列”复选框;

5)点击 OK.

现在表格已按相同 ID 求和。
the table has been summed based on the same ID

2.22 使用 VBA

下面的 VBA也可以将具有相同 ID 的行合并并求和。

1. 按 Alt + F11 键打开 Microsoft Visual Basic for Applications 窗口,然后点击 插入 > 模块 创建新空白模块。
click Insert > Module to create a new blank module

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 Sub

3. 然后按 F5 键或点击 运行 run button按钮,弹出对话框选择要使用的表格,然后点击 OK.

现在所选区域已按相同值合并并求和。

note button该 VBA 会破坏原始数据,使用前请先保存数据副本。

2.23 使用实用工具 – 高级合并行

如果表格有两列以上且需合并并计算,例如有三列,第一列为需合并的重复产品名,第二列为需合并并用逗号分隔的门店名,最后一列为需按重复行求和的数值,如下图所示,Kutools for Excel 的高级合并行功能可帮您实现。
combine and do calculations

1.选中表格后点击 Kutools > 合并拆分 > 高级合并行.
click Advanced Combine Rows feature of kutools

2. 在高级合并行对话框中,请按如下操作:

1)选择 ID 列,并设置为主键;

2)选择要合并的列,点击“汇总”并选择分隔符。

3)选择要计算的列,点击“计算”并选择一种计算方式。

4)点击 确定.

现在,行已按相同行合并并完成计算。

note button高级合并行功能会破坏原始数据,使用前请先保存数据副本。

有关此功能的更多详情,请访问高级合并行

有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel

如需 30 天免费试用 Kutools for Excel,请立即下载

2.3 合并相邻且值相同的行

如果有一个包含多列的表格,其中一列有重复值,现在需要将该列中相邻且值相同的行合并,如下图所示,如何实现?
Combine adjacent rows with same value

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

copy and paste the code into the module

3. 然后按 F5 键或点击 运行 run button按钮启用该 VBA,弹出对话框选择要使用的表格,然后点击 OK.
select the data range

现在,第一列中相邻且值相同的行已在所选区域合并。

note button该 VBA 会破坏原始数据,使用前请先保存数据副本。且该 VBA 会合并所选表格第一列中相同的值。

2.32 使用实用工具 – 合并相同单元格

如果您已在 Excel 中安装 Kutools for Excel,其“合并相同单元格”功能可一步完成此操作。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

选择要合并相同值的列,然后点击 Kutools > 合并拆分 > 合并相同单元格.
click Merge Same Cells feature of kutools

现在,相邻且值相同的单元格已被合并。

tip button如果您想取消合并并填充值,可使用 取消合并单元格并填充值 功能。
apply the Unmerge Cells & Fill Values feature
unmerge the merged cells and fill values back

有关此功能的更多详情,请访问合并相同单元格

有关此功能的更多详情,请访问取消合并单元格

有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel

如需 30 天免费试用 Kutools for Excel,请立即下载


3 合并单元格

3.1. 将多行多列合并到一个单元格中

如需将多行多列的区域合并为一个单元格,这里提供四种方法。

示例:合并区域 A1:C3
Combine multiple rows and columns into a single cell

3.11 使用和号符号 (&)

在 Excel 中,和号符号 & 通常用于连接文本。

选择要放置合并结果的单元格,然后输入如下公式:

=A1&", "&B1&", "&C1&", "&A2&", " &B2&", "&C2&", "&A3&", "&B3&", "&C3

info icon在该公式中,& 用于连接文本,", " 是分隔符(逗号+空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。

Enter 键获取合并结果。

3.12 使用 CONCATENATE 函数(适用于 Excel2016 或更早版本)

如果您使用的是 Excel2016 或更早版本,可以使用 CONCATENATE 函数来实现。

CONCATENATE语法说明
CONCATENATE (text1,[text2],…)

有关 CONCATENATE 函数的更多详情,请访问:CONCATENATE

选择要放置合并结果的单元格,然后输入如下公式:

=CONCATENATE(A1,", ",B1,", ",C1,", ",A2,", ",B2,", ",C2,", ",A3,", ",B3,", ",C3)

info icon在该公式中,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)

info icon在该公式中,A1、B1…、C3 是要合并的文本,", " 是分隔符(逗号+空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。

然后按 Enter 键获取合并结果。

TEXTJOIN语法说明
TEXTJOIN (delimiter, ignore_empty, text1, [text2], ...)

有关 TEXTJOIN 函数的更多详情,请访问:TEXTJOIN

使用 TEXTJOIN 合并列或行:

=TEXTJOIN(", ",TRUE,A1:C3)

info icon在该公式中,A1:C3 是需要合并的连续区域,", " 是分隔符(逗号+空格),用于在结果单元格中分隔两个文本。如果想用其他分隔符,只需输入用双引号括起来的分隔符。逻辑值 TRUE 表示合并时忽略空单元格,如需包含空白,将 TRUE 替换为 FALSE。

然后按 Enter 键获取合并结果。

tip button如需用换行符作为分隔符,可在公式中使用 CHAR(10),如 =TEXTJOIN(CHAR(10),TRUE,A1:C3),然后将结果单元格设置为自动换行。
format the result cell as Wrap Text

3.14 使用“合并行/列/单元格并保留值”功能

如果您已在 Excel 中安装 Kutools for Excel,其“合并行/列/单元格并保留值”功能可快速完成此操作。

1.选择要合并为一个单元格的区域,然后点击 Kutools > 合并拆分 > 合并行/列/单元格并保留值.
click Combine Rows, Columns or Cells without Losing Data feature of kutools

2. 在弹出的对话框中,勾选 合并到一个单元格 并根据需要指定分隔符,然后点击 确定.
specify the options in the dialog box

现在,所有单元格内容已用指定分隔符合并到一个单元格。如果内容过多无法完全显示,可点击 自动换行开始 选项卡下显示全部内容。
the cells are merged into one cell with a specific delimiter

有关此功能的更多详情,请访问合并列、行、单元格并保留值

有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel

如需 30 天免费试用 Kutools for Excel,请立即下载

3.2 合并多行多列为单列/单行

转置单元格为一列
  Transpose cells into one single column
转置单元格为一行
 Transpose cells into one single row
 

3.21 命名区域并使用 INDEX 函数(仅适用于合并为单列)

如需将区域转置为单列,可先命名区域,再用 INDEX 函数实现。

1.选择区域,右键打开菜单,点击 定义名称.
 right-click the data range, and click Define Name

2. 在弹出的 新建名称 对话框中,在 名称 文本框输入名称,点击 OK.
type a name in the Name textbox

3. 命名区域后,选择放置转置数据的单元格,使用如下 INDEX 函数:

=INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1)

有关 INDEX 函数的更多详情,请点击此处

4. 按 Enter 键后向下拖动自动填充柄,直到出现 #REF! 错误值。
enter a formula and drga the formula down

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

copy and paste the vba code into the module

3. 然后按 F5 键或点击 运行 run button按钮,弹出对话框选择区域,点击 OK.
select a range of cells

4. 再弹出对话框选择放置结果的单元格,点击 OK.
select a cell to place the result

3.23 使用实用工具 – 转换区域

如需将单元格合并为一行,Excel 无内置功能支持。但若已安装 Kutools for Excel,其“转换区域”功能支持将区域转换为单列或单行,也支持将行或列转换为区域。

Kutools for Excel 提供了超过 300 种高级功能,简化复杂任务,提升创造力与效率。 通过集成 AI 能力,Kutools 能够精准自动执行任务,让数据管理变得轻松简单。Kutools for Excel 的详细信息...         免费试用...

1.选择区域,点击 Kutools > 区域 > 转换区域.
click Transform Range feature of kutools

2. 在 转换区域 对话框中,勾选 区域转单列区域转单行 选项,根据需要点击 OK.
select the option you need

3. 弹出对话框选择放置结果的单元格,点击 OK.
select a cell to place the result

现在区域已转换为一行或一列。

有关此功能的更多详情,请访问转换区域

有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel

如需 30 天免费试用 Kutools for Excel,请立即下载

3.3 将多列堆叠为一列且不重复

如果表格中有多列且存在重复值,如何将多列堆叠为一列且只保留唯一值,如下图所示?
Stack columns into one column without duplicate

本部分提供三种不同方法解决此问题。

3.31复制粘贴并删除重复值

在 Excel 中,常规方法是逐列复制粘贴,然后删除重复值。

1.选择第一列,按 Ctrl + C 键复制,然后选择目标单元格,按 Ctrl + V 键。
copy and paste the first column data

2. 重复第1 步,将其他列依次复制粘贴到第一列下方。
repeat to copy other columns data below the first column

3.选中堆叠后的列,点击 数据 > 删除重复值,在 删除重复值 对话框中勾选列名,点击 OK.
click Data > Remove Duplicates
check the column name in the dialog box

4. 弹出对话框提示已删除重复值,点击 OK 关闭后,堆叠列只保留唯一值。
all duplicates are removed

tip button如果有上百列,逐一复制粘贴非常耗时。但如果您已安装 Kutools for Excel ,可用 转换区域 功能快速将区域转换为一列,再用 Excel 的 删除重复值 功能。

选择要堆叠的列区域,点击 Kutools > 区域 > 转换区域.
click Transform Range feature of kutools

然后勾选 区域转单列 选项,点击 OK 选择放置堆叠列的单元格。
check the Range to single column option

然后用“删除重复值”功能去除重复值。

有关此功能的更多详情,请访问转换区域

有关 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

copy and paste the code into the module

3. 然后按 F5 键或点击 运行 run button按钮,弹出对话框选择要堆叠的列,点击 OK。
select the columns that needed To be stacked

4. 第二个弹出对话框选择目标单元格,点击 OK.
select a destinate cell to place the stacked column

现在,所有列已堆叠为一列且只保留唯一值。

3.4. 合并单元格并保留格式

如果有两列,其中一列为特殊格式(如自定义日期时间 mm/dd/yyyy),用常规方法合并后格式会丢失,如下图所示:
Combine cells but losing formatting

本部分将介绍几种合并单元格并保留格式的方法。
Combine cells and keep formatting

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)

info icon在该公式中,A2 为需保留格式的单元格,“mm/dd/yyyy hh:mm”为所用格式,B2 为需合并的其他单元格。" " 表示用空格分隔。可根据需要更改引用、格式和分隔符。

Enter 键并向下拖动自动填充柄,填充所有单元格。

3.42 使用 Microsoft Word

1.选中要合并的表格,按 Ctrl + C 复制。
copy the data range

2. 打开空白 Word 文档,按 Ctrl + V 粘贴,然后点击文档中的表格,此时表格右上角出现十字图标。
paste the range to word

3. 点击 布局 选项卡,然后点击 转换为文本数据 分组,在弹出的 转换表格为文本 对话框中,指定列分隔符。点击 OK.
click Convert to Text in the Data group
specify the separator for the columns

现在 Word 中的表格内容已转换为文本。
the contents of table in Word have been converted to texts

4.选中转换后的文本,按 Ctrl + C 复制,回到 Excel选中空白单元格,按 Ctrl + V 粘贴合并结果。
copy and paste back to Excel file

3.43 使用实用工具 – 合并并保留数据

最高效的方法是使用 Kutools for Excel 的“合并行/列/单元格并保留值”功能,应用时只需勾选“使用格式化后的值”选项,合并结果即可保留数据格式。

1.选中包含结果单元格的表格,点击 Kutools > 合并拆分 > 合并行/列/单元格并保留值.
click Combine Rows, Columns or Cells without Losing Data feature of kutools

2. 在弹出的对话框中,根据需要指定合并操作,并取消勾选 使用格式化后的值 复选框(默认已勾选)。点击 确定.
specify the combine operation in the dialog box

现在数据已合并并保留格式。
the data has been combined and keep the formatting

有关此功能的更多详情,请访问合并列、行、单元格并保留值

有关 Kutools for Excel 的更多详情,请访问 Kutools for Excel

如需 {module745} 天免费试用 Kutools for Excel,请立即下载

3.5 合并单元格生成日期

假设有一个表格,年份、月份和日期分别在不同列中,需要将这些列合并生成日期,如下图所示:
Combine cells to make date

3.51 使用 DATE 函数

DATE 函数用于根据年、月、日生成日期。

DATE 函数语法说明
DATE( year, month, day )

有关 DATE 函数的更多详情,请访问 DATE 函数。

将下方公式复制粘贴到要放置日期的单元格:

=DATE(A2,B2,C2)

info icon在该公式中,A2、B2 和 C2 分别为包含年份、月份和日期的单元格。

Enter 键获取第一个日期,然后向下拖动自动填充柄获得所有日期。
use date function to get the result


更多 Excel 教程:

合并多个工作簿/工作表为一个本教程,几乎涵盖所有可能遇到的合并场景,并为您提供专业解决方案。

拆分文本、数字和日期单元格(分列)本教程分为三部分:拆分文本单元格、拆分数字单元格和拆分日期单元格,每部分均提供不同示例,帮助您应对类似拆分问题。

在 Excel 中合并多个单元格内容且不丢失数据本教程聚焦于按单元格中特定位置提取内容,并收集多种方法,帮助您按指定位置提取文本或数字。

在 Excel 中比较两列的匹配与差异本文涵盖了比较两列时可能遇到的大多数场景,希望对您有所帮助。


  • 超级公式栏(轻松编辑多行文本和公式);阅读布局(轻松读取和编辑大量单元格);粘贴到筛选区域...
  • 合并单元格/行/列并保留数据;拆分单元格内容;合并重复行并求和/平均值... 防止重复单元格;比较区域...
  • 选择重复或唯一行选择空白行(所有单元格为空);在多个工作簿中进行超级查找和模糊查找;随机选择...
  • 精准复制多个单元格而不改变公式引用;自动创建对多个工作表的引用;插入项目符号、复选框等...
  • 收藏并快速插入公式、区域、图表和图片;用密码加密单元格创建邮件列表并发送电子邮件...
  • 提取文本,添加文本,按位置删除,删除空格;创建并打印分页小计;在单元格内容和批注之间转换...
  • 超级筛选(保存并应用筛选方案到其他工作表);按月/周/日高级排序,频率等;按粗体、斜体特殊筛选...
  • 合并工作簿和工作表;基于关键列汇总表格;将数据分割到多个工作表批量转换 xls、xlsx 和 PDF...
  • 数据透视表按周数、星期几等分组... 用不同颜色显示未锁定、已锁定单元格高亮显示包含公式的单元格/名称...
kte tab 201905
  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读。
  • 在同一窗口的新标签页中打开和创建多个文档,而不是在新窗口中。
  • 将您的生产力提高 50%,每天为您减少数百次鼠标点击!
officetab bottom