跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何在Excel中查找特定日期范围(两个日期之间)的最大值或最小值?

Author Siluvia Last modified

在日常数据分析中,尤其是处理交易记录或时间序列数据时,您经常需要识别在特定时间段内出现的最高或最低值。例如,假设您有一个如下截图所示的表格,并且想要确定两个日期之间的最大值或最小值——比如从2016/7/1到2016/12/1。这是生成特定时期报告、比较月度表现或跟踪数据波峰和波谷时的常见需求。本文将通过使用Excel公式、VBA代码和内置功能,为您提供几种实用解决方案,帮助您快速准确地提取所需值。

A screenshot showing an Excel table with dates and values to calculate max or min in a date range


使用数组公式查找特定日期范围内的最大值或最小值

一种简单直接的方法是使用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,""))

此公式检查哪些日期介于起始日期和结束日期之间,并仅考虑匹配行中的值来计算最大值。

A screenshot showing the result of finding the max value within a date range using an array formula in Excel

查找2016/7/1至2016/12/1之间的最小值:

3. 若要在同一日期范围内查找最小值,请采用类似方法。输入以下公式(再次使用Ctrl + Shift + Enter确认):

=MIN(IF((A5:A17<=$D$1)*(A5:A17>=$B$1), B5:B17, ""))

此公式的工作方式相同,但返回与日期条件匹配的最小值。

A screenshot showing the result of finding the min value within a date range using an array formula in Excel

注意:

  • 在上述示例中,A5:A17是包含日期的区域,$B$1是起始日期,$D$1是结束日期,B5:B17是要评估的值区域。请调整这些引用以匹配您的实际数据。
  • 确保所引用的两个区域长度相同——否则,公式可能会生成错误。
  • 仔细检查您的日期条目是否格式化为日期而非文本,否则公式可能无法正常工作。

提示:

  • 如果您使用的是Office 365或Excel 2021及更高版本,则可以使用MAXIFSMINIFS函数进行更简单的基于条件的计算。
  • 如果公式意外返回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. 要运行宏,请点击 Run button 按钮(或按 F5)。按照提示选择日期和值范围,并输入起始和结束日期。指定日期间隔的最大值和最小值将显示在对话框中。

提示:

  • 确保所选的日期和值范围包含相同的行数,并且彼此直接对应。
  • 这种方法特别有助于处理超长列表或根据变化条件自动执行重复的最大值/最小值计算。
  • 如果选择了空或无效范围,或者日期输入格式不正确,代码可能不会产生有效结果——运行之前请仔细检查您的选择。

其他内置Excel方法:使用数据透视表按日期范围筛选并显示最大值/最小值

如果您不想使用公式或代码,利用Excel的数据透视表功能提供了一种交互式、无公式的方法来按日期筛选数据并显示最大值或最小值等汇总值。该解决方案适合需要探索数据、生成报告或使用图形界面轻松调整条件的用户。

1. 选择表格(包括日期和值),然后转到“插入”选项卡并点击“数据透视表”。

2. 在“创建数据透视表”对话框中,选择放置数据透视表的位置,然后点击“确定”。

3. 在“数据透视表字段”窗格中,将“日期”字段拖到“”区域,并将“”字段(您希望查找最大值/最小值的字段)拖到“”区域。默认情况下它会显示“求和”;点击“”区域中的字段,选择“值字段设置”,然后根据需要更改为“最大值”或“最小值”。

4. 要按特定日期范围筛选,请点击“日期”字段的行标签下拉菜单,选择“日期筛选”>“介于…”,然后指定起始和结束日期(例如2016/7/12016/12/1),最后点击“确定”。

现在,数据透视表将显示您指定范围内每个日期的最大值或最小值。如果只需要整个范围内的单个最高或最低值,您可以进一步筛选或直观扫描汇总结果。

注意:

  • 确保“日期”列中的所有单元格都是真实日期(而非文本)。混合格式可能导致筛选器遗漏行。
  • 如果源数据发生变化,请右键点击数据透视表并选择“刷新”以更新结果。
  • 根据您的布局,Excel可能会按月/季度/年份对日期进行分组。如有必要,请右键点击数据透视表中的某个日期并选择“取消组合”(或“组合…”以设置所需的级别)。
  • 对于非常大的数据集,将数据透视表放在新的工作表上可以提高可读性和性能。

提示:

  • 为“日期”字段添加切片器(数据透视表分析 > 插入切片器)以交互方式更改范围。
  • 需要在整个筛选范围内找到单个最大值/最小值吗?筛选后,对“值”列进行排序,或者添加第二个“值”字段并将其切换为最大值/最小值
  • 结合数据透视图以获得随筛选器更新的可视化摘要。

此方法避免了手动输入公式并允许动态交互——非常适合演示或多用户场景。对于高度定制的输出或跨多张表批量自动化,请考虑使用公式或VBA方法。


相关文章

最佳Office办公效率工具

🤖 Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件VLookup|多值VLookup|多表查找|模糊查找……
高级下拉列表快速创建下拉列表 |依赖下拉列表 | 多选下拉列表……
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列……
特色功能网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)……
15大工具集12项 文本工具添加文本删除特定字符等)|50+种 图表 类型甘特图等)|40+实用 公式基于生日计算年龄等)|19项 插入工具插入二维码从路径插入图片等)|12项 转换工具小写金额转大写汇率转换等)|7项 合并与分割工具高级合并行分割单元格等)| ……
Kutools支持多种语言——可选择英语、西班牙语、德语、法语、中文等40多种语言!

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