如何在 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 中找出某範圍內出現次數最多的值?
最佳 Office 生產力工具
| 🤖 | KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行 | 產生程式碼| 建立自訂公式 | 分析資料並產生圖表| 呼叫增強函數…… |
| 熱門功能:尋找、醒目提示或標記重複值 | 刪除空白行 | 合併列或儲存格而不遺失資料 | 不使用公式的四捨五入…… | |
| 高級 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 中啟用分頁式編輯與閱讀功能,以及 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 天完整功能試用— 無需註冊,無需信用卡
- 超值之選— 比單獨購買各增益集更省費用