如何在 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. 要執行宏,請點擊 按鈕在 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 助手:以智能執行為基礎,革新數據分析 |生成程式碼 | 創建自訂公式 | 分析數據並生成圖表 | 調用 Kutools 增強函數… |
熱門功能:查找、選取項目的背景色或標記重複值 | 刪除空行 | 合併列或單元格且不遺失數據 | 四捨五入(免公式)... | |
高級 LOOKUP:多條件 VLookup|多值 VLookup|多表查找|模糊查找... | |
高級下拉列表:快速創建下拉列表 |依賴型下拉列表 | 多選下拉列表... | |
列管理器:添加指定數量的列 | 移動列 | 切換隱藏列的顯示狀態 | 比較區域及列... | |
精選功能:網格聚焦 | 設計檢視 | 增強編輯欄 | 工作簿及工作表管理器 | 資源庫(快捷文本) | 日期提取器 | 合併資料 | 加密/解密儲存格 | 按列表發送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體/傾斜/刪除線...)... | |
15 大工具集:12 項文本工具(添加文本、刪除特定字符…)|50+ 儀表 類型(甘特圖等)|40+ 實用 公式(基於生日計算年齡等)|19 項插入工具(插入QR码、根據路徑插入圖片等)|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 天全功能試用 — 無需註冊、無需信用卡
- 最超值 — 一次購買,節省單獨外掛費用