如何在 Excel 中提取两个日期之间的所有记录?
在 Excel 中处理大量带时间戳的数据时,您常常需要快速提取或筛选出介于两个特定日期之间的所有记录。例如,分析某个账单周期内的交易、查看某个月的考勤情况,或仅聚焦于自定义日期范围内录入的条目。手动逐行查找并复制相关数据不仅耗时费力,还极易出错——尤其当数据量持续增长时,问题更为突出。高效提取指定日期区间内的全部记录,不仅能显著节省您的时间和精力,更能有效避免遗漏关键信息或在处理过程中引入人为错误。
![]() | ![]() | ![]() |
以下介绍了几种在 Excel 中提取两个日期之间所有记录的实用方法。每种方法都各具优势,适用于不同场景:包括无需加载项的公式法、借助 Kutools for Excel 提升操作便捷性、灵活高效的 VBA 代码,以及 Excel 内置的筛选功能——为多样化的用户需求和偏好提供灵活高效的解决方案。
通过 Kutools for Excel 提取两个日期之间的所有记录![]()
通过公式提取两个日期之间的所有记录
若要在 Excel 中使用公式提取两个日期之间的所有记录,请按以下步骤操作。此方案特别适用于需要动态更新的场景:每当原始数据集或日期条件发生变化时,结果将自动刷新。不过,如果您对数组公式不太熟悉,初始设置可能会稍显复杂;此外,若数据集非常庞大,该方法也可能影响计算性能。
1. 准备一个新工作表(例如 Sheet 2),用于指定日期范围并显示提取的记录。在 A2 和 B2 单元格中分别输入所需的开始日期和结束日期。为便于理解,您可在 A1 和 B1 单元格添加标题(如“开始日期”和“结束日期”)。
2. 在 Sheet 2 的 C2 单元格中输入以下公式,统计 Sheet 1 中日期落在限定范围内的行数:
=SUMPRODUCT((Sheet1!$A$2:$A$22>=A2)*(Sheet1!$A$2:$A$22<=B2)) 输入公式后,按 Enter,即可轻松预知符合筛选条件的条目数量,快速掌握结果概览。
注意:公式中,Sheet 1 指原始数据所在的工作表;$A$2:$A$22 为数据中的日期列。请根据您的实际数据调整这些引用。A2 和 B2 分别为起始日期与结束日期所在的单元格。
3. 要显示匹配的记录,请选择一个空白单元格作为提取列表的起始位置(例如 Sheet 2 的 A5 单元格),然后输入以下数组公式:
=IF(ROWS(A$5:A5)>$C$2,"",INDEX(Sheet1!A$2:A$22,SMALL(IF((Sheet1!$A$2:$A$22>=$A$2)*(Sheet1!$A$2:$A$22<=$B$2),ROW(Sheet1!A$2:A$22)-ROW(Sheet1!$A$2)+1),ROWS(A$5:A5)))) 输入公式后,按 Ctrl + Shift + Enter(而非仅按 Enter),即可将其作为数组公式运行。随后,使用填充柄先向右拖动以覆盖所有数据列,再向下拖动,直至显示所有匹配行。当出现空白时,即表示所有匹配数据均已提取完毕。
提示:
- 若返回零值,表示已无更多匹配记录,请停止继续拖动。
- 公式中的 INDEX(...)部分可调整以提取其他列。如需返回其他字段,请修改 Sheet 1!A$2:A$22 中引用的列即可。
- 此公式可轻松扩展,以支持多个条件,或用于提取整行数据(只需在每列中重复使用该公式即可)。
4. 某些日期结果可能显示为五位数(Excel 序列日期编号)。要将其转换为可读的日期格式,请选择相应单元格,切换至开始选项卡,打开格式下拉菜单,选择短日期,即可让提取的数据更清晰、更易用。
注意事项:
- 请确保原始数据中的所有日期条目均为真正的日期格式,而非以文本形式存储,否则公式可能无法按预期正常运行。
- 若数据量发生变化,请相应调整数组范围。
- 若出现 #NUM! 或 #N/A 错误,请检查源数据中是否存在空白的输入日期或格式不一致的情况。
通过 Kutools for Excel 提取两个日期之间的所有记录
如果您希望采用更简洁、交互性更强的解决方案,Kutools for Excel 的选择指定单元格功能可助您仅需单击几下,即可提取符合日期范围条件的整行,最大限度减少对公式或手动设置的依赖。该方法特别适合经常处理复杂筛选任务或对大型数据集执行批量操作的用户,既能降低公式出错概率,又能显著加快工作流程。
安装 Kutools for Excel 后,请按以下步骤操作:(免费下载立即体验 Kutools for Excel!)
1. 首先,选择您要分析和提取的数据集范围。然后,点击 Excel功能区中的 Kutools> 选择> 选择指定单元格,即可打开“高级选择”对话框。
2. 在选择指定单元格对话框中:
- 勾选“整行”选项以选择完整匹配的行。
- 设置筛选条件:在日期列的下拉列表中,选择大于和小于。
- 请手动在文本框中输入起始日期和结束日期(确保格式与您的数据一致)。
- 请确保选择“And”逻辑,以便两个条件同时生效。
3. 单击确定,Kutools 将立即选中您指定限定区域范围内日期列对应的所有行。随后,按 Ctrl + C 复制所选行,切换到空白工作表或新位置,再按 Ctrl + V 粘贴提取结果。
提示与注意事项:
- Kutools 方法无需改动原始数据,也无需编写任何公式。
- 若存在日期格式不一致的情况,请在复制前预览所选内容。
- 对于重复性或批量筛选任务,请使用此功能——针对不同的日期范围快速重复操作步骤。
- 如果您的 Kutools 版本未显示所述功能,请更新至最新版本以获得最佳兼容性。
场景分析:此方法非常适合需要管理多列数据列表,或需根据不断变化的日期范围反复提取完整记录的用户。
VBA 代码——使用宏自动筛选并提取两个到某天之间的所有行
如果您的工作流经常涉及在两个日期之间提取数据,并希望完全自动化该过程,使用 VBA 宏是一个明智的选择。通过 VBA,您可以提示用户选择日期列、输入起始日期和结束日期,并自动筛选匹配的行并将其复制到新工作表中。这种方法可节省手动操作并减少错误,但需要启用宏并对 Visual Basic 编辑器有一定了解。
以下是设置此类宏的方法:
1. 单击开发工具 > Visual Basic,打开 VBA 编辑器。在新打开的 Microsoft Visual Basic for Applications 窗口中,单击插入 > 模块,然后将以下代码复制并粘贴到该模块中:
Sub ExtractRowsBetweenDates_Final()
'Updated by Extendoffice
Dim wsSrc As Worksheet
Dim wsDest As Worksheet
Dim rngTable As Range
Dim colDate As Range
Dim StartDate As Date
Dim EndDate As Date
Dim i As Long
Dim destRow As Long
Dim dateColIndex As Long
Dim cellDate As Variant
Set wsSrc = ActiveSheet
Set rngTable = Application.InputBox("Select the data table (including headers):", "KutoolsforExcel", Type:=8)
If rngTable Is Nothing Then Exit Sub
Set colDate = Application.InputBox("Select the date column (including header):", "KutoolsforExcel", Type:=8)
If colDate Is Nothing Then Exit Sub
On Error GoTo DateError
StartDate = CDate(Application.InputBox("Enter the start date (yyyy-mm-dd):", "KutoolsforExcel", "", Type:=2))
EndDate = CDate(Application.InputBox("Enter the end date (yyyy-mm-dd):", "KutoolsforExcel", "", Type:=2))
On Error GoTo 0
On Error Resume Next
Set wsDest = Worksheets("FilteredRecords")
On Error GoTo 0
If wsDest Is Nothing Then
Set wsDest = Worksheets.Add
wsDest.Name = "FilteredRecords"
rngTable.Rows(1).Copy
wsDest.Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
wsDest.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
End If
destRow = wsDest.Cells(wsDest.Rows.Count, 1).End(xlUp).Row + 1
dateColIndex = colDate.Column - rngTable.Columns(1).Column + 1
For i = 2 To rngTable.Rows.Count
cellDate = rngTable.Cells(i, dateColIndex).Value
If IsDate(cellDate) Then
If cellDate >= StartDate And cellDate <= EndDate Then
rngTable.Rows(i).Copy
wsDest.Cells(destRow, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
wsDest.Cells(destRow, 1).PasteSpecial Paste:=xlPasteFormats
destRow = destRow + 1
End If
End If
Next i
Application.CutCopyMode = False
wsDest.Columns.AutoFit
MsgBox "Filtered results have been added to '" & wsDest.Name & "'.", vbInformation
Exit Sub
DateError:
MsgBox "Invalid date format. Please enter dates as yyyy-mm-dd.", vbExclamation
End Sub 2. 要运行宏,请点击
(运行)按钮,或按 F5 键。
然后按照提示完成以下步骤:
- 选择数据表(包括标题行)当第一个输入框出现时,请选择整个表格(包括标题行),然后单击确定。
- 选择日期列(包括标题)当第二个输入框出现时,请仅选择日期列(包括标题),然后单击确定。
- 输入起始日期和结束日期系统将提示您输入开始日期(格式:yyyy-mm-dd,例如 2025-06-01),接着输入结束日期(例如 2025-06-30),每次输入后单击确定。
系统将自动创建一个名为 FilteredRecords 的工作表(如果该工作表尚不存在),并将符合条件的行(即日期介于起始日期与结束日期之间的行)复制到其中。每次运行宏时,新匹配的行都会追加到现有结果的下方。
故障排除:
- 如果运行后无任何反应,请检查您的选择区域——无效的区域或取消的对话框将导致宏退出。
- 请确保日期列中的条目为真正的 Excel 日期;如果以文本形式存储,请先转换后再进行准确筛选。
场景分析:VBA 解决方案特别适用于重复性任务、高级工作流,或在向非技术用户共享半自动化方案时——只需分配一个按钮,即可实现更便捷的操作。
其他内置 Excel 方法——使用 Excel 内置的筛选功能
对于希望采用简单、交互式方式,且无需编写公式或代码的用户,Excel 内置的筛选功能提供了一种快速查看并提取两个日期之间数据行的便捷方法。该方法非常适合偶尔执行的任务、可视化检查,或需要直接在工作表界面中操作的场景。但请注意:一旦您的日期条件或数据发生变化,此方法不会自动更新——每次筛选都需手动重复操作。
使用方法如下:
- 选择您的数据区域,并确保包含列标题。
- 切换至功能区上的数据选项卡,然后单击筛选,各标题旁将出现小型下拉箭头。
- 单击日期列的箭头,选择日期筛选 > 介于……。
- 在对话框中输入所需的起始日期和结束日期。请确保格式与您数据中的日期格式一致。
- 单击确定,只有日期在您指定限定区域范围内的行才会保持可见。
- 选中所有可见行,按下 Ctrl + C 复制,然后转至空白区域或其他工作表,再按下 Ctrl + V 即可粘贴筛选结果。
提示与注意事项:
- 此方法最适合用于快速可视化检查或临时提取数据。
- 若日期列格式不一致,请提前修正,以确保筛选功能精准运行。
- 完成操作后,请记得清除筛选器,以重新显示完整数据集。
- 筛选后的行只是被隐藏,并未删除——您的原始数据保持不变。
场景分析:Excel 内置的筛选功能最适合处理中等规模的数据表,尤其适用于需要即时预览或复制数据子集,且无需保存公式或宏的场景。
故障排除与总结建议:
- 为确保所有解决方案顺畅运行,请务必确认工作表中日期单元格的格式保持一致。
- 使用公式或 VBA 时,请根据工作表的实际结构调整列和区域引用,以免出现索引或引用错误。
- 对于超大数据集,Kutools 或内置筛选通常能更快得出结果,且相比复杂的数组公式,更不易超出内存或公式计算限制。
- 如果输出中出现意外的空白或缺失记录,请仔细检查日期条件、输入区域和数据格式是否按预期设置。
演示:使用 Kutools for Excel 提取两个日期之间的所有记录
最佳办公效率工具
| 🤖 | 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 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱


