Excel で2 つの日付の間に含まれるすべてのレコードを抽出するにはどうすればよいですか?
Excel で大量のタイムスタンプ付きデータを扱う際、特定の2 つの日付の間に該当するすべてのレコードを抽出またはフィルターしたい場面は頻繁にあります。たとえば、請求期間中の取引を分析したり、特定の月の勤怠状況を確認したり、カスタム日付範囲内で記録されたエントリを調査したりする必要がある場合です。該当する各行を手動で探し出してコピーするのは、データ量が増えるほど面倒で、ミスも起こりやすくなります。2 つの指定日付の間に収まるすべてのレコードを効率的に抽出すれば、大幅な時間と労力の節約につながるだけでなく、重要なエントリを見落としたり、データ処理中に誤りを混入させたりするリスクも軽減できます。
![]() | ![]() | ![]() |
以下では、Excel で2 つの日付の間に該当するすべてのレコードを抽出するための実用的な方法をいくつかご紹介します。これらのアプローチはそれぞれ異なるシナリオやユーザーのニーズに適しており、アドイン不要の数式ベースの抽出から、Kutools for Excel を活用したより手軽な方法、VBA コード、そしてExcel の組み込みフィルター機能まで、幅広い選択肢を提供します。
数式を使って2 つの日付の間にあるすべてのレコードを抽出する
Kutools for Excel を使って2 つの日付の間にあるすべてのレコードを抽出する![]()
Excel のフィルター機能を使って2 つの日付の間にあるレコードを抽出する
数式を使って2 つの日付の間にあるすべてのレコードを抽出する
Excel で数式を使って2 つの日付の間に含まれるすべてのレコードを抽出するには、以下の手順に従ってください。この方法は、元のデータセットや日付条件が変更されると結果が自動的に更新される動的処理に特に効果的です。ただし、配列数式に不慣れな場合は、初期設定がやや複雑に感じられるかもしれません。また、データセットが非常に大きい場合、計算パフォーマンスが低下する可能性があります。
1。抽出結果を表示するための新しいワークシート(例:Sheet2)を用意し、日付範囲を指定します。セル A2 と B2 にそれぞれ希望の開始日と終了日を入力してください。わかりやすさを高めるために、A1 と B1 には「開始日」や「終了日」などのヘッダーを追加してもよいでしょう。
2。Sheet2 のセル C2 に次の数式を入力し、Sheet1 の指定範囲内で条件に該当する日付を含む行の件数をカウントします。
=SUMPRODUCT((Sheet1!$A$2:$A$22>=A2)*(Sheet1!$A$2:$A$22<=B2)) 数式を入力したら、Enterキーを押してください。これにより、フィルター条件に一致するエントリの件数がすぐに把握でき、期待される結果の数も一目でわかります。
注:この数式では、Sheet1は元のデータが入力されているシートを指し、$A$2:$A$22はそのデータ内の日付列です。実際のデータに応じて、これらの参照を適宜調整してください。A2およびB2は、それぞれ開始日と終了日を入力するセルです。
3。一致するレコードを表示するには、リストの抽出を開始したい空白セル(例:Sheet2 のセル 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(...)部分は、他の列を抽出するように簡単に調整できます。他のフィールドを返したい場合は、Sheet1!A$2:A$22の参照列を変更してください。
- この数式は、複数の条件に対応可能で、行全体を抽出することもできます(各列に数式を繰り返すことで拡張可能)。
4。一部の日付が5 桁の数字(Excel のシリアル値)で表示されることがあります。読みやすい日付形式に変換するには、該当セルを選択し、ホームタブの書式設定ドロップダウンから短い日付形式を選んでください。これで、抽出されたデータがより明確で使いやすくなります!
注意事項:
- 元データ内のすべての日付エントリが、実際に日付形式になっていることをご確認ください。テキストとして保存されている場合、数式が期待どおりに動作しないことがあります。
- データサイズが変更された場合は、配列の範囲を調整してください。
- #NUM! や #N/A エラーが表示された場合は、入力日付が空白でないか、およびソースデータに不整合がないかをご確認ください。
Kutools for Excel を使って2 つの日付の間にあるすべてのレコードを抽出する
より洗練されたインタラクティブなソリューションをお探しの場合は、特定のセルを選択するというKutools for Excel の機能を使えば、数回のクリックで日付範囲に一致する行全体を簡単に抽出できます。これにより、数式や手動設定の手間を最小限に抑えられます。複雑なフィルタリング作業を頻繁に行う方や、大規模なデータセットに対して一括操作を行う方に特に最適です。数式エラーのリスクを減らし、ワークフローを大幅に高速化できるからです。
Kutools for Excel をインストール後、以下の手順に従ってください:(今すぐKutools for Excel を無料ダウンロード!)
1。まず、分析および抽出したいデータセットの範囲を選択します。次に、Excel リボンからKutools > 選択 > 特定のセルを選択するをクリックします。これにより、高度な選択用のダイアログボックスが表示されます。
2。特定のセルを選択するダイアログで:
- 「行全体」オプションにチェックを入れると、完全一致する行全体が選択されます。
- フィルター条件を設定します:日付列のより大きいとより小さいのドロップダウンリストを選択します。
- 開始日と終了日をテキストボックスに手動で入力してください(データ形式に一致していることをご確認ください)。
- 両方の条件を同時に適用するには、「And」論理が選択されていることをご確認ください。
3。OKをクリックすると、Kutools が指定された日付範囲内にあるすべての行を即座に選択します。その後、選択した行をコピーするにはCtrl + Cを押し、空白のシートまたは新しい場所に移動してCtrl + Vを押して、抽出結果を貼り付けます。
ヒントと注意点:
- Kutools の方法なら、元のデータを変更したり、数式を入力したりする必要がまったくありません。
- 日付形式に不整合がある場合は、コピーする前に選択内容をプレビューしてください。
- 繰り返しのフィルタリング作業やバッチ処理にはぜひこの機能をご活用ください。異なる日付範囲に対して、手順を素早く繰り返すことができます。
- 説明どおりの機能がKutools のバージョンに表示されない場合は、互換性を確保するため、最新バージョンに更新してください。
シナリオ分析:この方法は、多数の列を含むリストを管理している方、または日付条件が変わるたびにレコード全体を繰り返し抽出する必要がある方に最適です。
VBA コード - マクロを使用して、2 つの特定の日付の間にあるすべての行を自動的にフィルターおよび抽出する
2 つの日付の間でデータを抽出する作業を頻繁に行い、プロセス全体を自動化したい場合は、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キーを押してください。
その後、プロンプトに従って手順を完了してください:
- データテーブル(ヘッダーを含む)を選択します最初の入力ボックスが表示されたら、ヘッダー行を含むテーブル全体を選択して、OKをクリックします。
- 日付列(ヘッダーを含む)を選択します2 番目の入力ボックスが表示されたら、ヘッダーを含む日付列のみを選択して、OKをクリックします。
- 開始日と終了日を入力しますまず、開始日を入力してください(形式:yyyy-mm-dd/例:2025-06-01)。次に、終了日を入力してください(例:2025-06-30)。それぞれの入力後にOKをクリックします。
「FilteredRecords」という名前のワークシートが自動的に作成されます(まだ存在しない場合)。開始日から終了日までの期間に日付が含まれる一致する行が、そのシートにコピーされます。また、マクロを実行するたびに、新たに一致した行が既存の結果の下に追加されます。
トラブルシューティング:
- 実行後に何も起こらない場合は、「範囲を選択してください」のメッセージを確認してください。無効な範囲が指定された場合やダイアログがキャンセルされた場合、マクロは終了することがあります。
- 日付列のエントリがExcel の実際の日付形式になっていることをご確認ください。テキスト形式で保存されている場合は、正確にフィルタリングできるよう、事前に変換してください。
シナリオ分析:この VBA ソリューションは、繰り返し実行するタスクや高度なワークフローに特に役立ちます。非技術的なユーザーと半自動化されたソリューションを共有するのにも最適です。さらに使いやすくしたい場合は、ボタンを割り当てることも可能です。
その他のExcel 組み込みメソッド - Excel の組み込みフィルター機能を使用する
数式やコードを使わずにシンプルでインタラクティブな操作を好むユーザーにとって、Excel の組み込みフィルター機能は、2 つの日付の間に該当する行を素早く表示・抽出するための最適な手段です。これは、たまに行うタスクや視覚的な確認、あるいはワークシートのインターフェースを直接操作したい場面にぴったりです。ただし、日付条件やデータが変更されても自動で更新されないため、新しいフィルターセッションごとに手順を繰り返す必要があります。
使用方法は次のとおりです:
- データ範囲を選択し、列ヘッダーが含まれていることをご確認ください。
- リボンのデータタブに移動して、フィルターをクリックすると、各ヘッダーの横に小さなドロップダウン矢印が表示されます。
- 日付列の矢印をクリックして、日付フィルター>期間内。。。を選択してください。
- ダイアログボックスで目的の開始日と終了日を入力してください。その際、形式がデータの日付形式と一致していることをご確認ください。
- OKをクリックすると、制限された範囲内の日付を持つ行のみが表示されます。
- 表示されているすべての行を選択し、Ctrl + Cを押してコピーしてください。その後、空の領域または別のシートに移動し、Ctrl + Vを押してフィルター結果を貼り付けます。
ヒントと注意事項:
- この方法は、素早い視覚的確認やアドホックなデータ抽出に最適です。
- 日付列の形式が一貫していない場合は、フィルターが正確に動作するよう、事前に修正してください。
- 作業が完了したら、必ずフィルターを解除して元のデータセット全体を再度表示してください。
- フィルターされた行は非表示になるだけで、削除されることはありません。元のデータはそのまま保持されます。
シナリオ分析:Excel の組み込みフィルターは、中規模のテーブルで数式やマクロを保存せずにサブセットを即座にプレビューまたはコピーしたい場合に最適です。
トラブルシューティングとまとめの提案:
- すべてのソリューションが正しく動作するよう、ワークシート全体で日付セルの形式を常に一貫させてください。
- 数式や VBA を使用する際は、インデックスエラーや参照エラーを防ぐため、列や範囲の参照を実際のシート構造に合わせて適切に調整してください。
- 非常に大規模なデータセットでは、広範な配列数式を使うよりも、Kutools やExcel の組み込みフィルターの方が通常、より高速に結果を提供し、メモリや数式計算の制限に達する可能性も低くなります。
- 出力結果に予期しない空白やレコードの欠落が見られる場合は、日付条件、入力範囲、およびデータ形式が意図したとおりに設定されているか、再度ご確認ください。
Kutools for Excel で2 つの日付の間にあるすべてのレコードを抽出するデモ
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得


