如何在 Excel 中提取介於兩個日期之間的所有記錄?
當您在 Excel 中處理大量帶有時間戳記的資料時,經常需要提取或篩選出介於兩個特定日期之間的所有記錄。例如,您可能想分析帳單週期內的交易、檢視特定月份的出勤狀況,或是僅聚焦於某個自訂日期範圍內登錄的項目。手動逐一搜尋並複製相關列不僅耗時費力,隨著資料量增加,出錯的機率也隨之提高。高效地提取介於兩個指定日期間的所有記錄,不僅能大幅節省寶貴時間與精力,更能有效降低遺漏重要項目或在處理過程中引入錯誤的風險。
![]() | ![]() | ![]() |
以下提供幾種在 Excel 中提取介於兩個日期之間所有記錄的實用方法。每種方法皆有其適用情境與獨特優勢——無論是無需外掛的公式提取法、運用 Kutools for Excel 提升操作便利性,還是透過 VBA 程式碼或 Excel 內建篩選功能,都能為不同需求與使用者偏好提供靈活高效的解決方案。
使用 Kutools for Excel 提取介於兩個日期之間的所有記錄![]()
使用公式提取介於兩個日期之間的所有記錄
若要在 Excel 中使用公式提取介於兩個日期之間的所有記錄,請依照下列步驟操作。此解決方案特別適合需要動態更新的情境:一旦原始資料集或日期條件有所變更,結果便會自動同步更新。然而,若您對陣列公式較不熟悉,初始設定可能稍顯複雜;此外,若資料集規模龐大,也可能影響計算效能。
1. 準備一個新工作表(例如 Sheet 2),用來指定日期範圍並顯示提取的記錄。在 A2 和 B2 儲存格中分別輸入所需的開始日期與結束日期。為提升清晰度,您還可在 A1 和 B1 加入標題(例如「開始日期」與「結束日期」)。
2. 在 Sheet 2 的 C2 儲存格中輸入下列公式,即可計算 Sheet 1 中有多少列的日期落在指定範圍內:
=SUMPRODUCT((Sheet1!$A$2:$A$22>=A2)*(Sheet1!$A$2:$A$22<=B2)) 輸入公式後,按下 Enter,即可掌握符合篩選條件的資料筆數,輕鬆預估應得的結果數量!
注意:此公式中,Sheet 1 代表您的原始資料工作表;$A$2:$A$22 為資料中的日期欄位。請根據您的實際資料調整這些參照。A2 與 B2 分別為儲存起始日期與結束日期的儲存格。
3. 若要顯示符合條件的記錄,請選取一個空白儲存格作為提取清單的起始位置(例如 Sheet 2 的 A5 儲存格),並輸入下列陣列公式:
=IF(ROWS(A$5:A5)>$C$2,"",INDEX(Sheet1!A$2:A$22,SMALL(IF((Sheet1!$A$2:$A$22>=$A$2)*(Sheet1!$A$2:$A$22<=$B$2),ROW(Sheet1!A$2:A$22)-ROW(Sheet1!$A$2)+1),ROWS(A$5:A5)))) 輸入公式後,請按下 Ctrl + Shift + Enter(而非僅按 Enter),將其轉為陣列公式。接著,利用填滿控點向右拖曳,涵蓋所有資料欄位;再向下拖曳,直到顯示所有符合條件的列。持續拖曳至出現空白行為止,即表示所有符合條件的資料皆已完整提取!
提示:
- 若出現零,表示已無更多符合條件的記錄可返回,此時請停止繼續向下拖曳。
- 公式中的 INDEX(...)部分可調整,以提取其他欄位。若要取得其他欄位資料,請修改 Sheet 1!A$2:A$22 中所引用的範圍。
- 此公式可擴充以支援多個條件,或用來提取整行資料(只需在各欄位中重複套用該公式)。
4. 部分日期結果可能顯示為五位數字(Excel 序號日期)。若要轉換為易讀的日期格式,請選取對應儲存格,前往開始索引標籤,開啟格式設定下拉式選單,並選擇短日期,即可讓提取的資料更清晰、更易使用!
注意事項:
- 請確認原始資料中的所有日期欄位確實為日期格式,而非以文字形式儲存,否則公式可能無法如預期運作。
- 若資料量有所變動,請調整陣列範圍。
- 若出現 #NUM! 或 #N/A 錯誤,請檢查輸入的日期是否為空白,或確認您的原始數據是否存在不一致的情形。
使用 Kutools for Excel 提取介於兩個日期之間的所有記錄
若您偏好更簡潔且互動性強的解決方案,選擇指定單元格功能可讓您僅需幾次點擊,便能從 Kutools for Excel 中提取符合日期範圍的整行資料,大幅減少對公式或手動設定的依賴。此方法特別適合經常處理複雜篩選任務或需對大型資料集執行批次作業的使用者,不僅能降低公式錯誤的風險,更能顯著加速工作流程!
安裝 Kutools for Excel 後,請依照下列步驟操作:(立即免費下載 Kutools for Excel!)
1. 首先,選取您要分析與提取的資料範圍,接著點擊 Excel 功能區中的 Kutools > 選取 > 選擇指定單元格,系統將立即開啟進階選取對話方塊。
2. 在選擇指定單元格對話方塊中:
- 勾選「整行」選項,即可選取完全符合條件的整列資料。
- 設定篩選條件:在日期欄位的大於與小於下拉選單中進行選擇。
- 手動將起始日期與結束日期輸入至文字框中(請確保格式與您的資料一致)。
- 請務必選擇「And」邏輯,以同時套用兩個條件。
3. 按一下確定,Kutools 將立即選取日期欄位落在您指定範圍內的所有列。接著按下 Ctrl + C 複製已選取的列,切換至空白工作表或新位置,再按下 Ctrl + V 貼上提取結果。
提示與注意事項:
- Kutools 的方法無需變更原始資料,也無需撰寫任何公式。
- 若日期格式不一致,請於複製前先預覽所選內容。
- 此功能專為重複性或批次篩選作業而設計,可針對不同日期範圍快速重複執行相同步驟。
- 若您的 Kutools 版本未顯示所述功能,請立即更新至最新版本,以確保最佳相容性與完整體驗。
情境分析:此方法非常適合需要管理多欄位清單,或需根據變動的日期條件反覆提取完整記錄的使用者。
VBA 程式碼-使用巨集自動篩選並提取兩個到某天之間的所有列
若您的工作流程經常需要提取兩個日期之間的資料,並希望實現全程自動化,使用 VBA 巨集將是明智之選。透過 VBA,系統可提示使用者選取日期欄位、輸入起始與結束日期,並自動篩選符合條件的列,再將其複製至新工作表。此方法不僅大幅節省手動作業時間,還能有效降低人為錯誤風險,但需啟用巨集功能,並具備基本的 Visual Basic 編輯器操作經驗。
設定此巨集的步驟如下:
1. 按一下開發人員 > Visual Basic,開啟 VBA 編輯器。在新開啟的 Microsoft Visual Basic for Applications 視窗中,按一下插入 > 模組,並將下列程式碼複製貼上至該模組中:
Sub ExtractRowsBetweenDates_Final()
'Updated by Extendoffice
Dim wsSrc As Worksheet
Dim wsDest As Worksheet
Dim rngTable As Range
Dim colDate As Range
Dim StartDate As Date
Dim EndDate As Date
Dim i As Long
Dim destRow As Long
Dim dateColIndex As Long
Dim cellDate As Variant
Set wsSrc = ActiveSheet
Set rngTable = Application.InputBox("Select the data table (including headers):", "KutoolsforExcel", Type:=8)
If rngTable Is Nothing Then Exit Sub
Set colDate = Application.InputBox("Select the date column (including header):", "KutoolsforExcel", Type:=8)
If colDate Is Nothing Then Exit Sub
On Error GoTo DateError
StartDate = CDate(Application.InputBox("Enter the start date (yyyy-mm-dd):", "KutoolsforExcel", "", Type:=2))
EndDate = CDate(Application.InputBox("Enter the end date (yyyy-mm-dd):", "KutoolsforExcel", "", Type:=2))
On Error GoTo 0
On Error Resume Next
Set wsDest = Worksheets("FilteredRecords")
On Error GoTo 0
If wsDest Is Nothing Then
Set wsDest = Worksheets.Add
wsDest.Name = "FilteredRecords"
rngTable.Rows(1).Copy
wsDest.Cells(1, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
wsDest.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
End If
destRow = wsDest.Cells(wsDest.Rows.Count, 1).End(xlUp).Row + 1
dateColIndex = colDate.Column - rngTable.Columns(1).Column + 1
For i = 2 To rngTable.Rows.Count
cellDate = rngTable.Cells(i, dateColIndex).Value
If IsDate(cellDate) Then
If cellDate >= StartDate And cellDate <= EndDate Then
rngTable.Rows(i).Copy
wsDest.Cells(destRow, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats
wsDest.Cells(destRow, 1).PasteSpecial Paste:=xlPasteFormats
destRow = destRow + 1
End If
End If
Next i
Application.CutCopyMode = False
wsDest.Columns.AutoFit
MsgBox "Filtered results have been added to '" & wsDest.Name & "'.", vbInformation
Exit Sub
DateError:
MsgBox "Invalid date format. Please enter dates as yyyy-mm-dd.", vbExclamation
End Sub 2. 若要執行巨集,請點擊
(執行)按鈕,或按下 F5 鍵。
接著依照提示完成下列步驟:
- 選取資料表(包含標題列)當第一個輸入方塊出現時,請選取整個資料表(包含標題列),再點擊確定。
- 選取日期欄位(包含標題)當第二個輸入方塊出現時,請僅選取日期欄位(包含標題),然後點擊確定。
- 輸入起始日期與結束日期系統將提示您輸入起始日期(格式:yyyy-mm-dd,例如 2025-06-01)。接著輸入結束日期(例如 2025-06-30)。每次輸入完畢後,請點選確定。
系統將自動建立名為「FilteredRecords」的工作表(若該工作表尚不存在)。符合條件的列(日期介於起始與結束日期之間者)會被複製至該工作表,且每次執行巨集時,新的相符列都會附加在既有結果下方。
疑難排解:
- 若執行後毫無反應,請檢查您所選的區域——若範圍無效或對話方塊遭取消,巨集將自動終止。
- 請確認日期欄位中的項目確實為 Excel 日期格式;若以文字儲存,請先轉換格式,以確保篩選準確無誤。
情境分析:此 VBA 解決方案特別適用於重複性任務、進階工作流程,或需與非技術使用者共享半自動化解決方案的情境——只需指派一個按鈕,即可進一步簡化操作!
其他 Excel 內建方法-使用 Excel 內建的篩選功能
對於偏好簡單互動操作、不願撰寫公式或程式碼的使用者,Excel 內建的篩選功能提供了一種快速檢視並提取兩個日期之間資料列的直覺方式。此方法特別適合偶發性任務、視覺確認,或需要直接透過工作表介面操作的情境。然而,若您的日期條件或資料有所變動,此方法無法自動更新——每次篩選都必須重複執行相同步驟。
使用方式如下:
- 選取您的資料範圍,並確保包含欄位標題。
- 前往資料功能區的索引標籤,點選篩選,每個欄位標題旁即會出現小型下拉箭頭!
- 按一下日期欄位的箭頭,選擇日期篩選 > 介於……。
- 在對話方塊中輸入所需的起始日期與結束日期,並確保格式與您資料中的日期格式一致。
- 按一下確定,僅顯示日期落在您指定範圍內的列。
- 選取所有可見列,按下 Ctrl + C 複製,再移至空白區域或其他工作表,按下 Ctrl + V 貼上篩選結果。
提示與注意事項:
- 此方法最適合用於快速目視檢查或臨時提取資料。
- 若日期欄位格式不一致,請先修正,以確保篩選功能正常運作。
- 完成後,請記得清除篩選,以重新顯示完整的資料集。
- 篩選後的列僅被隱藏,並未刪除——您的原始資料仍保持完整。
情境分析:Excel 內建的篩選功能最適合用於中等規模的表格,以及需要即時預覽或複製資料子集,卻又不想儲存公式或巨集的情境。
疑難排解與總結建議:
- 為確保所有解決方案順利運作,請務必確認工作表中所有日期儲存格的格式一致。
- 使用公式或 VBA 時,請務必根據工作表的實際結構調整欄位與範圍的參照,以避免索引或參照錯誤。
- 處理極大型資料集時,Kutools 或 Excel 內建篩選不僅運算速度更快,還能有效避免超出記憶體或公式計算限制,相較於廣泛使用陣列公式更具優勢。
- 若輸出結果出現非預期的空白或遺漏記錄,請再次確認您的日期條件、輸入範圍及資料格式是否已正確設定。
示範:透過 Kutools for 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 天完整功能試用— 無需註冊,無需信用卡
- 超值之選— 比單獨購買各增益集更省費用


