跳至页脚内容
EXCEL 工具

如何在Excel中进行减法:每种方法详解(2026)

由Iron Software团队撰写。 如果您希望以编程方式自动化您的电子表格任务,请务必访问 IronXL产品页面 以了解我们针对.NET的专业Excel库的更多信息。

在数据管理的世界里,信息很少以您所需的确切格式提供。 也许您在一列中有名,在另一列中有姓,或者您试图从单独的街道和城市字段中构建完整的邮寄地址。 手动重新输入这些数据不仅耗费您的生产力,还可能导致人为错误。

学习如何在Excel中合并两列是将原始数据转换为可用信息的基本技能。 无论您是在准备营销邮件列表、调节财务报告还是组织数据库,Excel 提供了多种强大的工具来无缝合并数据

最快的方法是使用Flash Fill(Ctrl + E)或简单的Ampersand (&) 公式来合并两列。 对于简单的姓名合并,只需在第一个单元格中输入所需结果(例如"John Smith"),移到下一个单元格,然后按Ctrl + E。 Excel 会立即识别模式并填充其余列。 如果您更喜欢能自动更新的公式方法,序列 $=A2& " " & B2$ 将两个单元格的内容用空格连接起来。

方法1:最快的方法(Flash Fill)

如果您不喜欢依赖公式并希望在几秒钟内完成工作,Flash Fill 是您的最佳助手。 此功能在Excel 2013中引入,利用"预测智能"来判断您想要完成的任务,并为您完成工作。

如何使用Flash Fill在Excel中"合并单元格"

  1. 创建目标列:确保您在要合并的数据旁边有一个空列。

如何在Excel中合并两列:完整的逐步指南:图片1 - 数据旁的空列

  1. 输入第一个条目:在第一个空单元格(例如C2)中,输入您希望使用来自列A和B的数据组合后显示的样子。

如何在Excel中合并两列:完整的逐步指南:图片2 - 输入的首个数据合并条目

  1. 提供第二个示例(可选):如果Excel没有立即捕捉到模式,在第二个单元格(C3)中输入所需结果。

  2. 触发魔法:在键盘上按Ctrl + E。 或者,转到功能区上的数据选项卡并单击Flash Fill按钮。

如何在Excel中合并两列:完整的逐步指南:图片3 - 使用快捷填充合并两列的示例输出

专业提示:Flash Fill是"静态"的。如果稍后您在列A中更改姓名,列C中的组合结果将不会自动更新。 对于动态数据,请使用下文列出的公式方法。

方法2:Ampersand运算符(&)

Ampersand (&) 是"连接"的标准运算符(连接事物的花哨词汇)。 它高度可靠,并在每个版本的Excel中都适用。

基本逻辑

公式结构遵循简单的模式:

=Cell1 &"Separator" & Cell2
=Cell1 &"Separator" & Cell2
`=Cell1 & "Separator" & Cell2`
$vbLabelText   $csharpLabel

实施步骤

  1. 选择您希望显示组合数据的单元格。
  2. 输入公式。 例如,要用空格连接名(A2)和姓(B2):
=A2&" "& B2
=A2&" "& B2
$vbLabelText   $csharpLabel

如何在Excel中合并两列:完整的逐步指南:图片4 - 添加公式

  1. 按下Enter

如何在Excel中合并两列:完整的逐步指南:图片5 - 自动填充合并数据的单元格

  1. 双击填充控点(单元格右下角的小绿色方块)将公式复制到整个列中。

如何在Excel中合并两列:完整的逐步指南:图片6 - 整列成功合并的数据

方法3:使用CONCATENATE 和 CONCAT 函数

虽然Ampersand快速,Excel提供内置函数专为合并数据而设计。

CONCAT vs. CONCATENATE

  • CONCATENATE:传统函数。 它需要您单独选择每个单元格。
  • CONCAT:现代替代品。 它允许您选择整个范围(例如,$A2:D2$)以一次性合并它们。

实现CONCAT的步骤

  1. 点击目标单元格。
  2. 键入以下公式以使用逗号分隔符合并单元格:
=CONCAT(A2,",",B2)
=CONCAT(A2,",",B2)
=CONCATENATE(A2, ",", B2)
$vbLabelText   $csharpLabel

如何在Excel中合并两列:完整的逐步指南:图片7 - 使用CONCAT函数合并两列

如果您有一个没有分隔符的长列表,可以简单地使用:

=CONCAT(A2:Z2)
=CONCAT(A2:Z2)
The provided code appears to be an Excel formula rather than C# code. If you intended to provide C# code for conversion to VB.NET, please provide the correct C# code snippet.
$vbLabelText   $csharpLabel

这将轻松合并多个单元格,如下所示:

如何在Excel中合并两列:完整的逐步指南:图片8 - 使用CONCAT函数合并的列

方法4:进阶用户选择(TEXTJOIN)

如果您使用 Excel 2019 或 Microsoft 365,TEXTJOIN 是最有效的方法。 它解决了合并列的两个最大麻烦:处理空单元格和重复的分隔符(如逗号或空格)。

为什么TEXTJOIN更优

使用标准连接,如果中间名丢失,结果中间通常会有两个空格。TEXTJOIN允许您"忽略空单元格"。

实施步骤

  1. 选择目标单元格。

  2. 输入公式:

    =TEXTJOIN(" ",TRUE,A2,B2)
    =TEXTJOIN(" ",TRUE,A2,B2)
    `=TEXTJOIN(" ", TRUE, A2, B2)` is a formula used in Excel, not C# code. If you intended to convert a C# code snippet that involves string joining, please provide the correct C# code. If this is indeed what you want to convert, please clarify how you would like it to be represented in VB.NET or any other context.
    $vbLabelText   $csharpLabel
    • " ":这是分隔符(单词之间的空间)。
    • TRUE:这告诉 Excel 忽略范围内的空单元格。

    • A2, B2:这些是您正在合并的单元格。

如何在Excel中合并两列:完整的逐步指南:图片9 - 使用TEXTJOIN的示例

这将导致您的两列数据被合并为单列,如下所示:

如何在Excel中合并两列:完整的逐步指南:图片10 - 使用TEXTJOIN的示例输出

方法5:使用Power Query处理大型数据集

当您处理数十万行时,公式可能会减慢工作簿的速度。 Power Query 是内置于 Excel 的专业级工具,可以在标准网格之外处理数据转换。

在Power Query中合并列的步骤

  1. 选择您的数据范围,然后转到 数据 > 来自表/范围
  2. 在Power Query编辑器窗口中,按住Ctrl并单击您想要合并的列的标题。

  3. 右键点击其中一个标题并选择合并列
  4. 选择您的分隔符(空格、制表符、逗号等),并为新列命名。

  5. 点击确定,然后点击关闭并加载以将合并数据返回Excel。

方法6:与VBA宏合并

对于那些每天执行相同清理任务的人来说,一个小的VBA脚本可以在多个工作簿中自动化合并过程。

  1. 按下Alt + F11打开VBA编辑器。

  2. 转到插入 > 模块
  3. 粘贴以下代码:
Sub MergeColumns()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 2 To lastRow
        Cells(i, 3).Value = Cells(i, 1).Value & " " & Cells(i, 2).Value
    Next i
End Sub
Sub MergeColumns()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 2 To lastRow
        Cells(i, 3).Value = Cells(i, 1).Value & " " & Cells(i, 2).Value
    Next i
End Sub
Sub MergeColumns()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    For i As Integer = 2 To lastRow
        Cells(i, 3).Value = Cells(i, 1).Value & " " & Cells(i, 2).Value
    Next i
End Sub
$vbLabelText   $csharpLabel

该宏将从列A和B中获取值,并将组合的字符串放在列C中。

常见问题及故障排除

合并数据常常揭示出您电子表格中的隐性不一致。 以下是修复最常见问题的方法。

1. 合并日期和货币

如果使用=A2 & B2试图将姓名与日期结合起来,日期将显示为五位数(例如45120)。 这是因为Excel将日期存储为序列号。

  • 解决方案: 使用TEXT函数保持格式:

    =A2& " " & TEXT(B2,"mm/dd/yyyy")
    =A2& " " & TEXT(B2,"mm/dd/yyyy")
    =A2 & " " & TEXT(B2, "mm/dd/yyyy")
    $vbLabelText   $csharpLabel

2. 多余的空格

如果您的源数据中不小心有前导或尾随空格,合并的结果将显得凌乱。

  • 解决方案: 将您的单元格引用包含在TRIM函数中:

    =TRIM(A2) &"  "& TRIM(B2)
    =TRIM(A2) &"  "& TRIM(B2)
    `=TRIM(A2) & "  " & TRIM(B2)`
    $vbLabelText   $csharpLabel

3. 数字变成文本

一旦您合并两列,结果永远是一个字符串(文本)。 您不能对包含"Item 100"的单元格进行数学求和。

  • 解决方案: 如果您正在合并两个数字以创建新的ID,并需要它保持为数字,请将整个公式包装在VALUE()中:

    =VALUE(A2 & B2)
    =VALUE(A2 & B2)
    `=VALUE(A2 & B2)` is an Excel formula, not C# code. If you intended to convert a C# expression involving string concatenation and conversion to a number, please provide the C# code. If this is indeed an Excel formula, it doesn't require conversion to VB.NET.
    $vbLabelText   $csharpLabel

面向开发者:使用 IronXL 自动化列合并

可惜的是,Excel的界面对手动任务很有用,但软件工程师经常需要以编程方式合并列。 在构建自动报告工具或将数据从数据库迁移到友好的电子表格时,这种情况很常见。

IronXL 允许 .NET 开发人员在不安装Microsoft Office的服务器上执行这些操作。 它提供了一个干净、直观的API来大规模读取、合并和格式化单元格

为什么使用 IronXL?

  • 速度: 比Excel GUI或互操作处理大型工作簿更快。
  • 无依赖: 在 Linux、Azure 和 Windows 上运行,无需安装Excel。
  • 准确性: 消除用户在共享工作簿中意外破坏公式的风险。

Code Snippet: Merging Columns in C

以下示例显示如何加载电子表格并使用IronXL以编程方式将两列合并到第三列中。

using IronXL;
// Load the existing workbook
WorkBook workbook = WorkBook.Load("Customer_Data.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Iterate through the rows to combine Column A (First Name) and B (Last Name)
for (int i = 1; i <= sheet.RowCount; i++)
{
    string firstName = sheet["A" + i].StringValue;
    string lastName = sheet["B" + i].StringValue;
    // Set the value of Column C to the combined string
    sheet["C" + i].Value = $"{firstName} {lastName}";
}
// Save the updated file
workbook.SaveAs("Consolidated_Customer_Data.xlsx");
using IronXL;
// Load the existing workbook
WorkBook workbook = WorkBook.Load("Customer_Data.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Iterate through the rows to combine Column A (First Name) and B (Last Name)
for (int i = 1; i <= sheet.RowCount; i++)
{
    string firstName = sheet["A" + i].StringValue;
    string lastName = sheet["B" + i].StringValue;
    // Set the value of Column C to the combined string
    sheet["C" + i].Value = $"{firstName} {lastName}";
}
// Save the updated file
workbook.SaveAs("Consolidated_Customer_Data.xlsx");
Imports IronXL

' Load the existing workbook
Dim workbook As WorkBook = WorkBook.Load("Customer_Data.xlsx")
Dim sheet As WorkSheet = workbook.DefaultWorkSheet

' Iterate through the rows to combine Column A (First Name) and B (Last Name)
For i As Integer = 1 To sheet.RowCount
    Dim firstName As String = sheet("A" & i).StringValue
    Dim lastName As String = sheet("B" & i).StringValue
    ' Set the value of Column C to the combined string
    sheet("C" & i).Value = $"{firstName} {lastName}"
Next

' Save the updated file
workbook.SaveAs("Consolidated_Customer_Data.xlsx")
$vbLabelText   $csharpLabel

使用IronXL合并名和姓的示例输出

如何在Excel中合并两列:完整的逐步指南:图片11 - 使用IronXL的示例输出

方法比较

|翻译方法|最适合|速度|动态? | |---|---|---|---| |Flash Fill|一次性、视觉任务|即时| 否 | |Ampersand (&)|简单的两列合并|非常快| 是 | |TEXTJOIN|多列/空单元格|快速| 是 | |Power Query|海量数据集(10万+行)| 缓和 |是(在刷新时)| |IronXL (.NET)|自动化应用程序和服务器|即时|可编程的|

总结和最佳实践

掌握结合列的能力在于为特定任务选择合适的工具。

  1. 使用快速填充进行快速的一次性修复,无需考虑公式。

  2. 使用TEXTJOIN生成数据可能缺失在某些行的专业报告。

  3. 始终使用TRIM,如果您的数据来自外部数据库,以避免不必要的空格。

  4. 审计您的数据合并后,特别是在处理日期或货币时,以确保格式保持完整。

准备好进一步推进您的数据自动化了吗? 无论您是商业分析师还是开发者,Iron Software提供的工具可让您的工作流程更高效。 尝试IronXL进行下一个项目,看看电子表格管理有多简单。

今天就试用IronXL免费的试用版!

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我