Excel で特定の日付をもとにその週の開始日と終了日を取得するには?

スケジュール、プロジェクト計画、出勤記録、タイムシートなどを頻繁に扱う際には、特定の日付に対応する週の開始日(月曜日)と終了日(日曜日)を素早く求めたい場面がよくあります。たとえば、日付リストがある場合、各日付がどの週(月曜日から日曜日まで)に属しているかを即座に把握できれば、週単位でのデータのグループ化、レポート作成、集計が格段にスムーズになります。では、Excel でこの情報を効率的に取得するにはどうすればよいでしょうか?本記事では、簡単な数式から高度な自動化手法まで、Excel で週の開始日と終了日を抽出するための実用的な方法をいくつかご紹介します。
数式を使用して特定の日付に基づく週の開始日と終了日を取得する
このアプローチは、シンプルな日付リストから各日付に対応する週の開始日と終了日を素早く取得したい場合に最適です。小規模~中規模のデータセットで効率よく動作し、特別な設定は一切不要。最新のすべてのExcel バージョンでご利用いただけます。
以下の簡単な数式を使えば、任意の日付に対応する週の月曜日(開始日)と日曜日(終了日)を簡単に計算できます。次の手順に従ってください。
指定された日付から週の開始日を取得する:
1。日付リストが A 列にある場合、週の開始日(月曜日)を表示したいセル(例:C2)を選択します。
2。そのセルに次の数式を入力してください:
=A2-WEEKDAY(A2,2)+1 3。Enter キーを押して確定し、必要に応じてフィルハンドルを下にドラッグして数式を他の行にも適用してください。
すると、各日付に対応する週の月曜日が表示されます。

指定された日付から週の終了日を取得する:
1。週の終了日(日曜日)を表示したいセル(例:D2)を選択します。
2。次の数式を入力してください:
=A2+7-WEEKDAY(A2,2) 3。再度 Enter キーを押し、フィルハンドルを使って他の日付にも数式をコピーします。
すると、各セルに A 列の日付と同じ週の日曜日が表示されます。

ヒントと注意点:
- これらの数式は、週が月曜日に始まり日曜日に終わると仮定しています(ヨーロッパ方式)。業務週が異なる場合は、
WEEKDAY関数の第2 引数を調整してください。 - Excel で日付が有効なシリアル値として認識されていない場合(たとえば、テキスト形式でインポートされたときなど)、結果が正しくないことがあります。日付が適切に書式設定されていることをご確認ください。
- 結果を別のシートにコピーする際は、セル参照が正しく調整されるようご注意ください。必要に応じて、絶対参照をご活用ください。
- 結果の列を日付として簡単に書式設定するには、ホーム > 数値の書式 > 短い日付を使えば、日付表示の一貫性が簡単に確保できます。
VBA コード - 複数の日付リストから週の開始日と終了日を自動抽出する
この方法は、異なる範囲に対して週の開始日と終了日を繰り返し抽出する必要がある場合や、ユーザーが選択した日付リストを含めて処理を自動化したい場合に最適です。VBA は、高度な操作を行うユーザーや、多数のシートで繰り返し作業を自動化したいユーザーにぴったりです。
1。「開発者ツール」>「Visual Basic」をクリックすると、「Microsoft Visual Basic for Applications」エディターが起動します。その後、「挿入」>「標準モジュール」をクリックして、以下のコードをウィンドウに貼り付けてください:
Sub ExtractWeekStartEndDates()
Dim WorkRng As Range
Dim cell As Range
Dim ws As Worksheet
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Select the date range to extract week start/end dates:", xTitleId, WorkRng.Address, Type:=8)
If WorkRng Is Nothing Then Exit Sub
Set ws = WorkRng.Worksheet
ws.Cells(1, WorkRng.Columns(1).Column + WorkRng.Columns.Count).Value = "Week Start (Mon)"
ws.Cells(1, WorkRng.Columns(1).Column + WorkRng.Columns.Count + 1).Value = "Week End (Sun)"
For Each cell In WorkRng
If IsDate(cell.Value) Then
cell.Offset(0, WorkRng.Columns.Count).Value = cell.Value - Weekday(cell.Value, 2) + 1
cell.Offset(0, WorkRng.Columns.Count + 1).Value = cell.Value + 7 - Weekday(cell.Value, 2)
End If
Next
Application.DisplayAlerts = True
End Sub 2。VBA コードを貼り付けたら、
実行ボタンをクリックしてください。するとダイアログが表示され、ワークシート内の日付範囲を選択できます。マクロは選択範囲の右側に「Week Start (Mon)」および「Week End (Sun)」というラベルの付いた2 つの列を追加し、リスト内の各日付に対して自動的に値を入力します。
パラメーターと注意点:
- このマクロは、日付値を含む任意の長方形の選択範囲(列やブロックなど)に適用できます。
- 選択範囲内のいずれかのセルが有効なExcel 日付でない場合、その行の週の開始日および終了日のセルは空白のままになります。
- ヘッダーのラベル「Week Start (Mon)」および「Week End (Sun)」は、コードを編集すれば必要に応じて変更可能です。
- マクロを再度実行するには、選択して実行する手順をもう一度繰り返すだけです。
- VBA 操作は Ctrl+Z で元に戻せませんので、あらかじめデータのコピーを作成しておくことをおすすめします。
トラブルシューティング:「開発者」タブが表示されない場合は、「ファイル > オプション > リボンのユーザー設定」で「開発者」を有効にしてください。エラーが発生した場合は、選択範囲に日付値が含まれていることと、Excel アプリケーションでマクロが有効になっていることを再度ご確認ください。
Power Query を使用してインポートされた日付データに週の開始日/終了日列を追加する
特に外部ファイルやデータベースからデータをインポートするなど、非常に大規模なデータセットを扱うユーザーにとって、Power Query(データの取得と変換)は、週の開始日と終了日の列を自動的に計算・追加するための堅牢で再現性に優れたソリューションを提供します。Power Query は最新版のすべてのExcel で利用可能であり、さらなる分析に先立ち、データを効率的にクリーニングおよび整形するのに最適です。
- データテーブルを選択し(日付列が含まれていることを確認)、データ > テーブル/範囲からをクリックして、Power Query エディターを起動します。
- Power Query で日付列を選択し、強調表示した状態で列の追加タブをクリックし、日付 > 週 > 週の開始日をクリックしてください。これにより、各日付に対応する月曜日を示す新しい列が追加されます。
ヒント:既定では週の開始日は月曜日です。データで異なる週の開始日を使用している場合は、週の開始日のドロップダウンをクリックして、他のオプションから選択できます。 - 引き続き日付列を選択した状態で、列の追加 > 日付 > 週 > 週の終了日をクリックしてください。これにより、各行に日曜日の日付が自動的に追加されます。
- 新しい列を確認した後、ホーム > 閉じて読み込むをクリックすると、週の開始日と終了日を含んだ変換済みデータがワークブックに戻ります。
メリットと注意点:
- Power Query を使えば、ソースデータが変更されると自動的に計算を再実行できます。
- この方法は、定期的に更新されるデータや外部からインポートされたデータ、あるいは非常に大きなリストに対して、自動化と再現性の観点から最適です。
- 週の開始日/週の終了日ボタンがグレーアウトしている場合は、対象の列が「日付」型として正しく認識されているかをご確認ください。必要に応じて、Power Query の「データ型」ドロップダウンから調整できます。
- Power Query は元のソースデータを変更せず、週の計算結果を含んだ新しい出力テーブルを作成します。
まとめと推奨:目的に最も適した方法を選びましょう。小規模で臨時のリストにはシンプルな数式を、自動化や高度なカスタマイズが必要な場合は VBA を、再現性の高いワークフローや大規模データセットには Power Query をご活用ください。広く展開する前には必ずサンプルデータでテストを行い、ワークブックの構造を変更する操作を行う前には作業内容を保存してください。
最高の 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 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得