如何在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<=$D$1)*(A5:A17>=$B$1),B5:B17,""))
此公式检查哪些日期介于起始日期和结束日期之间,并仅考虑匹配行中的值来计算最大值。
查找2016/7/1至2016/12/1之间的最小值:
3. 若要在同一日期范围内查找最小值,请采用类似方法。输入以下公式(再次使用Ctrl + Shift + Enter确认):
=MIN(IF((A5:A17<=$D$1)*(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. 要运行宏,请点击 按钮(或按 F5)。按照提示选择日期和值范围,并输入起始和结束日期。指定日期间隔的最大值和最小值将显示在对话框中。
提示:
- 确保所选的日期和值范围包含相同的行数,并且彼此直接对应。
- 这种方法特别有助于处理超长列表或根据变化条件自动执行重复的最大值/最小值计算。
- 如果选择了空或无效范围,或者日期输入格式不正确,代码可能不会产生有效结果——运行之前请仔细检查您的选择。
其他内置Excel方法:使用数据透视表按日期范围筛选并显示最大值/最小值
如果您不想使用公式或代码,利用Excel的数据透视表功能提供了一种交互式、无公式的方法来按日期筛选数据并显示最大值或最小值等汇总值。该解决方案适合需要探索数据、生成报告或使用图形界面轻松调整条件的用户。
1. 选择表格(包括日期和值),然后转到“插入”选项卡并点击“数据透视表”。
2. 在“创建数据透视表”对话框中,选择放置数据透视表的位置,然后点击“确定”。
3. 在“数据透视表字段”窗格中,将“日期”字段拖到“行”区域,并将“值”字段(您希望查找最大值/最小值的字段)拖到“值”区域。默认情况下它会显示“求和”;点击“值”区域中的字段,选择“值字段设置”,然后根据需要更改为“最大值”或“最小值”。
4. 要按特定日期范围筛选,请点击“日期”字段的行标签下拉菜单,选择“日期筛选”>“介于…”,然后指定起始和结束日期(例如2016/7/1至2016/12/1),最后点击“确定”。
现在,数据透视表将显示您指定范围内每个日期的最大值或最小值。如果只需要整个范围内的单个最高或最低值,您可以进一步筛选或直观扫描汇总结果。
注意:
- 确保“日期”列中的所有单元格都是真实日期(而非文本)。混合格式可能导致筛选器遗漏行。
- 如果源数据发生变化,请右键点击数据透视表并选择“刷新”以更新结果。
- 根据您的布局,Excel可能会按月/季度/年份对日期进行分组。如有必要,请右键点击数据透视表中的某个日期并选择“取消组合”(或“组合…”以设置所需的级别)。
- 对于非常大的数据集,将数据透视表放在新的工作表上可以提高可读性和性能。
提示:
- 为“日期”字段添加切片器(数据透视表分析 > 插入切片器)以交互方式更改范围。
- 需要在整个筛选范围内找到单个最大值/最小值吗?筛选后,对“值”列进行排序,或者添加第二个“值”字段并将其切换为最大值/最小值。
- 结合数据透视图以获得随筛选器更新的可视化摘要。
此方法避免了手动输入公式并允许动态交互——非常适合演示或多用户场景。对于高度定制的输出或跨多张表批量自动化,请考虑使用公式或VBA方法。
相关文章:
- 如何在Excel中文本字符串中查找第一个/最后一个数字的位置?
- 如何在Excel中查找每个月的第一个或最后一个星期五?
- 如何在Excel中使用vlookup查找第一个、第二个或第n个匹配值?
- 如何在Excel中查找某区域内频率最高的值?
最佳Office办公效率工具
🤖 | Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数…… |
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入…… | |
高级LOOKUP:多条件VLookup|多值VLookup|多表查找|模糊查找…… | |
高级下拉列表:快速创建下拉列表 |依赖下拉列表 | 多选下拉列表…… | |
列管理器: 添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列…… | |
特色功能:网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)…… | |
15大工具集:12项 文本工具(添加文本、删除特定字符等)|50+种 图表 类型(甘特图等)|40+实用 公式(基于生日计算年龄等)|19项 插入工具(插入二维码、从路径插入图片等)|12项 转换工具(小写金额转大写、汇率转换等)|7项 合并与分割工具(高级合并行、分割单元格等)| …… |
通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……
Office Tab为Office带来多标签界面,让您的工作更加轻松
- 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读。
- 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
- 可提升50%的工作效率,每天为您减少数百次鼠标点击!
所有Kutools加载项,一键安装
Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。





- 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
- 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
- 协同更高效——提升Office应用间的整体工作效率
- 30天全功能试用——无需注册,无需信用卡
- 超高性价比——比单独购买更实惠