如何在 Excel 中查找介于两个特定日期之间的最大值或最小值?
在日常数据分析中,尤其是在处理交易记录或时间序列数据时,您常常需要找出特定时间段内的最高值或最低值。例如,假设您有一个如下图所示的表格,并希望确定 2016/7/1 至 2016/12/1 期间的最大值或最小值——这在生成周期性报告、对比月度表现,或追踪数据的峰值与谷值时尤为常见。本文将通过 Excel 公式、VBA 代码及内置功能,为您提供几种高效实用的解决方案,助您快速精准地提取所需数值。

➤ 使用数组公式在特定日期范围中查找最大值或最小值
➤ VBA 代码:自动在到某天范围内查找最大值或最小值
➤ 其他内置 Excel 方法:使用数据透视表按日期范围筛选并显示最大值/最小值
使用数组公式在特定日期范围内查找最大值或最小值
一种直接的方法是在 Excel 中使用数组公式,它支持基于多个条件(例如判断日期是否落在指定范围内)进行计算。该方法适用于中等规模的数据集,尤其适合熟悉公式输入的用户。
假设您的工作表列表位于 A 列(A5:A17),对应的数值位于 B 列(B5:B17),而范围的起始日期和结束日期分别填入 B1 和 D1 单元格中。
1. 请选择一个空白单元格(例如 E2)用于显示结果。
查找 2016/7/1 至 2016/12/1 之间的最大值:
2. 在所选单元格中输入以下公式,编辑完成后,按 Ctrl+Shift+Enter(而非仅按 Enter),以便 Excel 将其识别为数组公式:
=MAX(IF((A5:A17=$B$1),B5:B17,"")) 此公式将筛选出介于起始日期与结束日期之间的日期,并仅基于匹配行中的数值计算最大值。

查找 2016/7/1 至 2016/12/1 之间的最小值:
3. 要在相同日期范围内查找最小值,请采用类似方法。输入以下公式(同样需按 )Ctrl+Shift+Enter 确认):
=MIN(IF((A5:A17=$B$1), B5:B17, "")) 此公式的工作原理相同,但会返回符合您日期条件的最小值。

注意事项:
- 在上述示例中,A5:A17 是包含日期的区域,$B$1 为开始日期,$D$1 为结束日期,B5:B17 则是需要评估的数值区域。请根据您的实际数据调整这些引用。
- 请确保所引用的两个区域长度一致,否则公式可能会出错。
- 请仔细检查您的日期条目是否已设置为日期格式(而非文本格式),否则公式可能无法按预期正常运行。
提示:
- 如果您使用的是 Office 365 或 Excel 2021 及更高版本,即可直接使用 MAXIFS 和 MINIFS 函数,轻松实现基于条件的计算。
- 如果公式意外返回 0 或空白值,请确认您的日期范围与现有数据的日期存在重叠,并检查是否存在容易被忽略的空单元格。
VBA 代码:自动在到某天范围内查找最大值或最小值
对于需要处理大型数据集、频繁重复此任务,或希望在报告中实现自动化的用户,VBA 宏解决方案能高效地在指定日期范围内查找最大值或最小值。借助 VBA,系统可提示用户每次选择相关区域并设定日期,非常适合动态应用场景或高级工作流集成。
1. 转到开发工具>Visual Basic。在弹出的 VBA 编辑器窗口中,点击插入> 模块,然后将以下代码复制并粘贴到新模块中:
Sub FindMaxMinInDateRange_Robust()
Dim ws As Worksheet
Dim dateRange As Range, valueRange As Range
Dim startCell As Range, endCell As Range
Dim startDate As Date, endDate As Date
Dim i As Long
Dim d As Date, v As Variant
Dim hasHit As Boolean
Dim maxV As Double, minV As Double
Const TITLE As String = "KutoolsforExcel"
On Error GoTo FailFast
Set ws = ActiveSheet
Set dateRange = Application.InputBox("Select the DATE range:", TITLE, Type:=8)
If dateRange Is Nothing Then Exit Sub
Set valueRange = Application.InputBox("Select the VALUE range (same rows as date range):", TITLE, Type:=8)
If valueRange Is Nothing Then Exit Sub
If dateRange.Rows.Count <> valueRange.Rows.Count Then
MsgBox "Date range and value range must have the SAME number of rows.", vbExclamation, TITLE
Exit Sub
End If
Set startCell = Application.InputBox("Select START date cell:", TITLE, Type:=8)
If startCell Is Nothing Then Exit Sub
Set endCell = Application.InputBox("Select END date cell:", TITLE, Type:=8)
If endCell Is Nothing Then Exit Sub
If Not IsDate(startCell.Value) Or Not IsDate(endCell.Value) Then
MsgBox "Start/End cell must contain valid dates.", vbExclamation, TITLE
Exit Sub
End If
startDate = CDate(startCell.Value)
endDate = CDate(endCell.Value)
If startDate > endDate Then
Dim tmp As Date
tmp = startDate: startDate = endDate: endDate = tmp
End If
For i = 1 To dateRange.Rows.Count
If IsDate(dateRange.Cells(i, 1).Value) Then
d = CDate(dateRange.Cells(i, 1).Value)
If d >= startDate And d <= endDate Then
v = valueRange.Cells(i, 1).Value
If IsNumeric(v) And Not IsEmpty(v) Then
If Not hasHit Then
maxV = CDbl(v): minV = CDbl(v)
hasHit = True
Else
If CDbl(v) > maxV Then maxV = CDbl(v)
If CDbl(v) < minV Then minV = CDbl(v)
End If
End If
End If
End If
Next i
If hasHit Then
MsgBox "Max value in range: " & maxV & vbCrLf & _
"Min value in range: " & minV, vbInformation, TITLE
Else
MsgBox "No rows matched the date range (or values were non-numeric).", vbExclamation, TITLE
End If
Exit Sub
FailFast:
MsgBox "Something went wrong: " & Err.Description, vbExclamation, TITLE
End Sub
2. 要运行宏,请点击 VBA 编辑器中的
按钮(或按 )F5)。按照提示选择日期和数值区域,并输入起始日期与结束日期,即可在对话框中查看您指定日期区间内的最大值和最小值。
提示:
- 请确保所选的日期区域与数值区域行数一致,并一一对应。
- 此方法尤其适用于处理大型列表,或根据动态变化的条件自动执行重复性的最大值/最小值计算。
- 若选择了空白区域、无效区域,或日期输入格式有误,代码可能无法返回有效结果——请在运行前仔细核对您的选择。
其他内置 Excel 方法:使用数据透视表按日期范围筛选并显示最大值/最小值
如果您不想使用公式或代码,可借助 Excel 的数据透视表功能,以交互式、无需公式的方式按日期筛选数据,并轻松显示最大值、最小值等汇总结果。此方案非常适合需要探索数据、生成报告,或通过图形界面灵活调整条件的用户!
1. 选中您的表格(包含日期和数值),然后转到插入选项卡,点击数据透视表。
2. 在创建数据透视表对话框中,选择数据透视表的放置位置,然后点击确定。
3. 在数据透视表字段窗格中,将日期字段拖至行区域,将值字段(即您希望查找最大值/最小值的字段)拖至值区域。默认情况下会显示求和;请点击值区域中的该字段,选择值字段设置,即可根据需要将其更改为最大值或最小值。
4. 要按特定日期范围筛选,请点击日期字段行标签的下拉按钮,选择日期筛选 > 介于……,然后指定起始日期和结束日期(例如)2016/7/1 至 2016/12/1),再点击确定。
数据透视表现在将显示您所选限定区域内每个日期对应的最大值或最小值。若您仅需该范围内的单个最高值或最低值,可进一步筛选,或直接查看汇总结果。
注意事项:
- 请确保日期列中的所有单元格均为真实日期(而非文本格式),否则混合格式可能导致筛选器遗漏某些行。
- 如果源数据发生变化,请右键单击数据透视表,选择刷新即可更新结果。
- 根据您的布局,Excel 可能会按月、季度或年对日期进行分组。如有需要,可在数据透视表中右键单击某个日期,然后选择取消组合(或)组合……以设置所需的分组级别)。
- 对于超大数据集,将数据透视表置于新工作表中,可显著提升可读性与性能。
提示:
- 为日期字段添加一个切片器(在“数据透视表分析”选项卡中点击)插入切片器),即可交互式地调整日期范围。
- 需要在整个筛选范围内获取单一最大值/最小值吗?筛选后,对“值”列进行排序,或添加第二个“值”字段,并将其汇总方式切换为最大值/最小值。
- 搭配数据透视图使用,即可获得随筛选条件自动更新的可视化摘要。
此方法无需手动输入公式,且支持动态交互,非常适合用于演示或多用户协作场景。若需实现高度自定义的输出,或在多个工作表中进行批量自动化处理,建议采用公式或 VBA 方法。
相关文章:
- 如何在 Excel 中快速定位文本字符串中第一个或最后一个数字的位置?
- 如何在 Excel 中快速定位每月的第一个或最后一个星期五?
- 如何在 Excel 中使用 VLOOKUP 查找第一个、第二个或第 n 个匹配值?
- 如何在 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 天全功能试用— 无需注册,无需信用卡
- 超值之选— 比单独购买插件更省钱