如何在 Excel 中将年、月、日合并为一个完整的日期?
在 Excel 中处理不同数据集时,您可能会遇到年、月、日分别存储在不同单元格中的情况——例如,A2 存储月份,B2 存储日期,C2 存储年份。将这些分散的元素合并为一个真正的日期格式,不仅让数据更清晰易读,还能轻松实现日期计算、排序和格式设置。以下示例展示了分离的值及其合并后的日期:

本教程为您介绍了多种将年、月、日组合为 Excel 日期的方法,灵活满足各类计算与展示需求。无论您需要生成简洁的文本结果、真正的日期值,还是自动化的批量处理方案,都能找到最适合的选项。
使用公式将年、月、日连接为日期
使用强大工具将年、月、日连接为日期
Excel 公式 —— 使用 DATE 函数创建真正的 Excel 日期值
VBA 代码 —— 自动将多行中的年、月、日值合并为 Excel 日期格式
使用公式将年、月、日连接为日期
如果您的主要目标是将合并后的日期以文本字符串形式显示在单个单元格中,可以使用基础的连接公式。这种方法能快速、直观地呈现完整的日期,但生成的结果仍是文本,而非真正的 Excel 日期值,因此无法对其进行日期计算或应用自动日期格式功能。
1. 请选择一个空白单元格用于显示合并后的日期,并在编辑栏中输入以下公式:
=A2&"/"&B2&"/"&C2 输入公式后,按 Enter 键确认。

2. 要将此公式应用到其他行,请从已填充的单元格向下拖动填充柄至该列中的其他单元格,即可为所选范围内的每一行自动连接月、日和年。
注意:在此公式中,“/”字符用作月、日、年之间的分隔符。您可根据本地日期格式或项目需求,灵活调整为短横线“——”或句点“。”等其他分隔符。

通过此方法,分离的月、日、年值被高效地组合成文本字符串;但若需对结果进行排序或执行其他日期相关的运算,则必须将其转换为真正的日期格式。
使用强大工具将年、月、日连接为日期
Kutools for Excel 中的合并功能提供了一种直观的解决方案,可将多个单元格中的值合并到一个单元格中,无需复杂公式即可简化流程。如果您需要重复执行此任务或处理大型区域,Kutools 支持带自定义分隔符和输出选项的批量合并,尤其适用。
要使用此功能,请确保您的月、日、年数据分别位于相邻的列中,然后按照以下步骤操作:
1. 选择包含月、日、年的相关列,然后单击 Kutools > 合并和拆分 > 合并行/列/单元格并保留值。

2. 在弹出的合并列或行对话框中,配置以下设置:

完成上述步骤后,所选单元格将合并为一个日期字符串。Kutools 为您提供了一种简单可靠的方式来高效处理大型数据集,并支持多种自定义选项以满足您的需求。设置分隔符时,请务必注意本地日期格式的差异。
Kutools for Excel——通过 300 多款必备工具全面增强 Excel 功能,助您工作更快速、更轻松,并借助 AI 功能实现更智能的数据处理与高效办公!立即获取
Excel 公式 —— 使用 DATE 函数创建真正的 Excel 日期值
当您不仅希望显示日期,还需进行进一步计算、应用自动格式或使用 Excel 的日期函数时,建议将值合并为真正的日期格式。DATE 函数可助您轻松实现这一点——通过将年、月、日合并为序列日期编号,即可立即计算持续时间、安排日程或按日期排序!
适用场景:当您需要获得真正的 Excel 日期(而非文本字符串)时使用,尤其适用于财务报告、时间跟踪,或任何需按时间顺序分析的任务。
注意事项:请确保每个单元格包含有效值(例如,月份在 1–12 范围内,日期在对应月份的有效天数范围内,且年份有效),以免公式出错。
1. 点击一个空白单元格(例如 D2)用于显示真实日期,并输入以下公式:
=DATE(C2,A2,B2) 在此公式中,C2 应包含年份,A2 包含月份,B2 包含日期。请根据您工作表的实际结构,灵活调整单元格引用。
2. 按 Enter 确认公式,结果单元格将包含一个真正的日期值,您可通过开始> 数字格式 选项将其轻松设置为“mm/dd/yyyy”或其他日期格式。
3. 要将公式应用到其他行,请选中结果单元格,然后使用填充柄向下拖动,即可将公式快速填充至整个数据集。
提示:如果您看到的是序列号而非常规日期,请选中单元格,右键单击并选择设置单元格格式 > 日期,即可将单元格格式更改为标准日期格式,让数值清晰显示为日期。
注意事项:若引用的单元格包含非数字文本,可能会出现 #VALUE! 等错误。请确认年、月、日的顺序是否与您的数据一致。
VBA 代码 —— 自动将多行中的年、月、日值合并为 Excel 日期格式
对于高级批量处理或自动化任务(尤其是在处理大型列表或希望彻底摆脱手动输入时),使用 VBA 极其实用。一个简单的宏即可在指定列中连接值,从而在整个数据集中生成真正的 Excel 日期。这种方法灵活高效,只需单击一次,就能轻松处理数百甚至数千行数据。
适用场景:当您需要在指定列中为大量重复任务生成真实的日期值,或希望进行更多自定义时,请选择 VBA 自动化。
1. 通过单击开发工具>Visual Basic,即可访问 Excel 中的 VBA 编辑器。当 Microsoft Visual Basic for Applications 窗口出现时,单击插入> 模块。
2. 将以下代码复制并粘贴到新模块中:
Sub ConcatDateToTrueDate_Fixed()
'Updated by Extendoffice 20250903
Dim ws As Worksheet
Dim StartCell As Range
Dim i As Long
Dim lastRow As Long
Dim yearCol As String
Dim monthCol As String
Dim dayCol As String
Dim outCol As String
Dim xTitleId As String
xTitleId = "Date Conversion"
Set ws = ActiveSheet
On Error Resume Next
Set StartCell = Application.InputBox("Select the FIRST DATA CELL in your table (e.g., A2). The macro will process all rows below it.", xTitleId, ws.Range("A2").Address, Type:=8)
On Error GoTo 0
If StartCell Is Nothing Then Exit Sub
yearCol = UCase(Trim(Application.InputBox("Enter the LETTER of the YEAR column (e.g., C):", xTitleId, "C", Type:=2)))
monthCol = UCase(Trim(Application.InputBox("Enter the LETTER of the MONTH column (e.g., A):", xTitleId, "A", Type:=2)))
dayCol = UCase(Trim(Application.InputBox("Enter the LETTER of the DAY column (e.g., B):", xTitleId, "B", Type:=2)))
outCol = UCase(Trim(Application.InputBox("Enter the LETTER of the OUTPUT column (e.g., D):", xTitleId, "D", Type:=2)))
If Len(yearCol) <> 1 Or Len(monthCol) <> 1 Or Len(dayCol) <> 1 Or Len(outCol) <> 1 Then
MsgBox "Invalid column letter entered. Please enter a single letter (e.g., A, B, C).", vbExclamation, xTitleId
Exit Sub
End If
lastRow = Application.Max(ws.Cells(ws.Rows.Count, yearCol).End(xlUp).Row, _
ws.Cells(ws.Rows.Count, monthCol).End(xlUp).Row, _
ws.Cells(ws.Rows.Count, dayCol).End(xlUp).Row)
If StartCell.Row > lastRow Then
MsgBox "No data found to process.", vbInformation, xTitleId
Exit Sub
End If
Application.ScreenUpdating = False
For i = StartCell.Row To lastRow
If IsNumeric(ws.Cells(i, yearCol).Value) And _
IsNumeric(ws.Cells(i, monthCol).Value) And _
IsNumeric(ws.Cells(i, dayCol).Value) Then
On Error Resume Next
ws.Cells(i, outCol).Value = DateSerial( _
Year:=ws.Cells(i, yearCol).Value, _
Month:=ws.Cells(i, monthCol).Value, _
Day:=ws.Cells(i, dayCol).Value)
If Err.Number <> 0 Then
ws.Cells(i, outCol).Value = "Invalid Date"
Err.Clear
End If
On Error GoTo 0
Else
ws.Cells(i, outCol).Value = ""
End If
Next i
Application.ScreenUpdating = True
MsgBox "Date conversion completed successfully! Processed rows: " & (lastRow - StartCell.Row + 1), vbInformation, xTitleId
End Sub 3. 要运行代码,请单击
按钮,系统将提示您选择数据集中的起始单元格,并指定年、月、日所在列及结果日期的输出位置。
完成后,宏将在指定的输出列中填入真正的 Excel 日期值,可立即用于计算或格式设置。如遇错误,请在重新运行前确认列引用和数据完整性。
实用技巧:执行宏脚本前,建议先保存工作。如需重复使用,可将代码保存为工作簿中的自定义宏,方便随时调用!
在选择这些方法时,请根据您对计算能力、自动化程度和易用性的需求进行权衡:若仅需简单显示,直接连接效果出色且速度更快;而 DATE 函数与 VBA 解决方案则生成真正的日期值,更适合深入分析与操作;Kutools 则针对各类数据格式,提供高效的批量处理能力与灵活的操作体验。
如果出现错误(例如数据格式异常、无效值或公式计算失败),请仔细检查源单元格及其引用。在公式或 VBA 中启用错误处理机制,以便及时提示并引导修正。对于大多数真实日期的显示问题,调整单元格格式通常即可解决。
相关文章:
最佳办公效率工具
| 🤖 | KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行 | 生成代码| 创建自定义公式 | 数据分析及生成图表| 调用 Kutools Functions…… |
| 热门功能:查找、高亮或标记重复项 | 删除空白行 | 合并列或单元格且不丢失数据 | 不使用公式的四舍五入…… | |
| 高级 LOOKUP:多条件 VLookup | 多值 VLookup | 跨多工作表 VLookup | 模糊查找…… | |
| 高级下拉列表:快速创建下拉列表 | 级联下拉列表 | 多选下拉列表…… | |
| 列管理器:添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列…… | |
| 特色功能:网格聚焦 | 设计视图 |增强编辑栏 | 工作簿和表管理器 | 资源库(自动文本)| 日期提取 | 汇总工作表 | 加密/解密单元格 | 按列表发送邮件 | 超级筛选 | 特殊筛选(筛选粗体单元格/斜体/删除线……) ...... | |
| 精选 15 工具集:12 文本工具(添加文本,删除特定字符,……)| 50+ 图表 类型(甘特图,……)| 40+ 实用公式(基于生日计算年龄,……)| 19 插入工具(插入二维码,从路径插入图片,……)| 12 转换工具(小写金额转大写,汇率转换,……)| 7 合并和拆分工具(高级合并行,分割单元格,……)|……更多 |
使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……
Office Tab 为 Office 带来标签式界面,让您的工作更轻松
- 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读。
- 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
- 将您的工作效率提升 50%,每天减少数百次鼠标点击!
所有 Kutools 插件,一个安装程序
Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。
- 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
- 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
- 协同效果更佳— 在多个 Office 应用中实现高效协同
- 30 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱