「この売上データ、週ごとにまとめてほしい」と頼まれて、手作業で日付を見ながら振り分けていませんか? 件数が多いほど時間がかかりますし、「年末の12月29日って今年の第何週?」と迷う場面も出てきます。 ExcelのWEEKNUM関数を使えば、日付を渡すだけで「第何週か」を自動で返してくれますよ。
この記事では、WEEKNUM関数の基本的な使い方から、週の基準の選び方、週次集計やスケジュール管理での実務活用、ISOWEEKNUM関数との違いまで一気に解説します。
WEEKNUM関数とは?(日付から週番号を返す関数)
WEEKNUM関数は、指定した日付が「その年の第何週か」を数値で返す関数です。 戻り値は1〜54の整数になります。
たとえば「2025年3月21日」を渡すと、「12」のように週番号が返ってきます。 週次レポートや週別集計の自動化に便利な関数です。
Excel 2010以降のバージョンで使用できます。 Microsoft 365 や Excel for the web でも同じように動きます。
読み方・語源
読み方は「ウィークナム」です。 「WEEK(週)」+「NUM(Number=番号)」で、「週番号」という意味になります。
WEEKNUM関数の書き方(構文と引数)
基本構文
=WEEKNUM(シリアル値, [週の基準])
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| シリアル値 | 必須 | 週番号を調べたい日付を指定します |
| 週の基準 | 省略可 | 週の始まりを何曜日にするかを数値で指定します。省略すると「1」(日曜始まり)になります |
第1引数の「シリアル値」には、セル参照のほかにDATE関数の結果も指定できます。
週の基準(第2引数)の一覧表
第2引数には以下の値を指定できます。
| 値 | 週の始まり | 方式 |
|---|---|---|
| 1(既定値) | 日曜日 | 1月1日を含む週が第1週 |
| 2 | 月曜日 | 1月1日を含む週が第1週 |
| 11 | 月曜日 | 1月1日を含む週が第1週 |
| 12 | 火曜日 | 1月1日を含む週が第1週 |
| 13 | 水曜日 | 1月1日を含む週が第1週 |
| 14 | 木曜日 | 1月1日を含む週が第1週 |
| 15 | 金曜日 | 1月1日を含む週が第1週 |
| 16 | 土曜日 | 1月1日を含む週が第1週 |
| 17 | 日曜日 | 1月1日を含む週が第1週 |
| 21 | 月曜日 | ISO 8601準拠(最初の木曜日を含む週が第1週) |
日本のビジネスでは月曜始まりが一般的です。 「2」または「11」を指定するのがおすすめですよ。
値「21」だけがISO 8601という国際規格に準拠した方式です。 この方式では、その年の最初の木曜日を含む週が第1週になります。
「2」と「11」の違いは?
どちらも月曜始まりで結果も同じになります。 違いは「2はExcel 2007までの旧形式」「11はExcel 2010以降に追加された新形式」という歴史的な経緯だけです。 これから新規に作るシートでは、新しい体系の「11〜17」を使っておくと、他の曜日始まりに切り替えるときも統一感が保てます。
WEEKNUM関数の基本的な使い方
日曜始まりで週番号を取得
第2引数を省略すると、日曜始まりで計算されます。
=WEEKNUM(A2)
たとえばA2に「2025/3/21(金曜日)」が入っている場合、結果は「12」です。
月曜始まりで週番号を取得
第2引数に「2」を指定すると、月曜始まりで計算されます。
=WEEKNUM(A2, 2)
A2が「2025/3/21(金曜日)」なら、結果は「12」です。 日本のビジネスシーンでは、この月曜始まりが使いやすいですよ。
日付文字列を直接指定
セル参照を使わず、数式の中に日付を直接書くこともできます。
=WEEKNUM("2025/3/21", 2)
結果は「12」です。 ただし、実務ではセル参照で日付を渡すほうが管理しやすいです。
WEEKNUM関数の実務活用パターン
週次レポートに「第○週」表記を入れる
日付セルから「第12週」のような表記を自動で作れます。 文字列連結で対応できます。
="第"&WEEKNUM(A2, 2)&"週"
A2が「2025/3/21」なら、結果は「第12週」です。 レポートの見出しやラベルに使えますよ。
週別に売上を集計する(SUMIFS連携)
SUMIFS関数で週別集計するには、補助列を使う方法が確実です。
まずC列に週番号、D列に年をそれぞれ出しておきます。
C2: =WEEKNUM(A2, 2)
D2: =YEAR(A2)
そのうえで、SUMIFS関数で条件集計します。
=SUMIFS(B:B, C:C, 12, D:D, 2025)
年も条件に入れるのがポイントです。 週番号だけでは、別の年の同じ週も合算されてしまいます。
スケジュール管理表で「今週・来週」を色分けする
WEEKNUM関数とTODAY関数を条件付き書式に組み込むと、タスク表で「今週ぶん」「来週ぶん」を自動で色分けできます。
タスクの締切が入ったA列を範囲選択して、条件付き書式の「数式を使用して書式設定」に次の式を入れます。
今週のタスクをハイライト:
=WEEKNUM($A2, 2)=WEEKNUM(TODAY(), 2)
来週のタスクをハイライト:
=WEEKNUM($A2, 2)=WEEKNUM(TODAY(), 2)+1
年をまたぐケースまで厳密に揃えたい場合は、AND(YEAR($A2)=YEAR(TODAY()), WEEKNUM($A2,2)=WEEKNUM(TODAY(),2)) のようにYEAR関数も条件に足しておくと安全です。
出勤週・在籍週の通し番号を出す(基準日からの経過週)
「入社日からの第何週?」「プロジェクト開始から何週目?」のように、基準日からの経過週を出したい場合もあります。 WEEKNUM関数の差分を使えば一発です。
たとえばB1に基準日(例: プロジェクト開始日 2025/4/7)、A2以降に各タスクの日付が入っている場合:
=WEEKNUM(A2, 2) - WEEKNUM($B$1, 2) + 1
基準日と同じ週なら「1」、翌週なら「2」が返ります。 月またぎや週またぎの集計でも、通し番号で扱えるので並び替えしやすくなりますよ。
ただし、年をまたぐ場合は WEEKNUM 同士の引き算では合わなくなります。 そのときは INT((A2-$B$1)/7)+1 のように、日数差を7で割る方法に切り替えると確実です。
TODAY関数で「今日は第何週?」を自動更新
TODAY関数と組み合わせれば、今日の週番号が常に最新になります。
="今週は第"&WEEKNUM(TODAY(), 2)&"週です"
ファイルを開くたびに自動更新されるので、進捗管理シートに入れておくと便利です。
よくあるエラーと対処法
WEEKNUM関数で発生しやすいエラーは2つです。
| エラー | 原因 | 対処法 |
|---|---|---|
| #VALUE! | 日付として認識できない値を指定した | セルの値が正しい日付形式か確認する。文字列の場合はDATEVALUE関数で変換する |
| #NUM! | 無効な週の基準を指定した、またはシリアル値が負の数 | 第2引数が一覧表の値(1, 2, 11〜17, 21)かを確認する |
「#VALUE!」が出るときのチェック手順
「#VALUE!」が出る場合、セルの表示は日付に見えても中身が文字列のケースが多いです。 次の順序で確認してみてください。
- セルを選択して数式バーを見る。「2025/3/21」のように左寄せで表示されていたら文字列の可能性が高い
=ISNUMBER(A2)で確認する。FALSE が返れば文字列- 文字列なら
=WEEKNUM(DATEVALUE(A2), 2)のようにDATEVALUE関数で日付値に変換する - 大量にある場合は、A列を選択して「データ」→「区切り位置」→「次へ」→「次へ」→「日付」を選んで完了。一気に日付に変換できる
「#NUM!」が出るときのチェック手順
第2引数の値が一覧表(1, 2, 11〜17, 21)以外だと「#NUM!」になります。 「3」や「20」を指定してしまうと出るので注意してください。
また、シリアル値が負の数(1900年より前の日付)の場合も「#NUM!」になります。 古い日付を扱うシートでは、計算前にIF関数でガードしておきましょう。
=IF(A2<DATE(1900,1,1), "範囲外", WEEKNUM(A2, 2))
結果が思った週番号にならないとき
「2025/1/5(日曜)が第2週になってしまう」のような違和感は、第2引数の取り違えが原因です。 月曜始まりにしたいのに省略していたり、「1」を指定していたりするとズレます。 結果が1ずれている感覚があったら、まず第2引数を見直しましょう。
WEEKNUM関数とISOWEEKNUM関数の違い
WEEKNUM関数とISOWEEKNUM関数は、どちらも週番号を返す関数です。 しかし「第1週の決め方」が異なります。
比較表
| 項目 | WEEKNUM関数 | ISOWEEKNUM関数 |
|---|---|---|
| 第1週の基準 | 1月1日を含む週(既定) | 最初の木曜日を含む週(ISO 8601) |
| 週の始まり | 第2引数で選べる(10種類) | 月曜日で固定 |
| 引数の数 | 2つ(日付, 週の基準) | 1つ(日付のみ) |
| 戻り値の範囲 | 1〜54 | 1〜53 |
実は WEEKNUM(日付, 21) と ISOWEEKNUM(日付) は同じ結果になります。 ISO方式を使うなら、引数が1つで済むISOWEEKNUM関数のほうがシンプルです。
年末年始の具体例
違いがはっきり出るのは、年末年始の日付です。
2025年12月29日(月曜日)で比較してみましょう。
=WEEKNUM("2025/12/29", 2)
結果: 53(2025年の第53週)
=ISOWEEKNUM("2025/12/29")
結果: 1(2026年の第1週として扱われる)
WEEKNUM関数は「1月1日を含む週が第1週」なので、年末でも当年の週番号です。 一方、ISOWEEKNUM関数はISO規格に基づき、翌年の第1週と判定します。
週の開始曜日の違いに注意
WEEKNUM関数は第2引数で週の開始曜日を10種類から選べます。 ところがISOWEEKNUM関数は月曜固定です。 「集計表は日曜始まりで作りたいけれど、ISO週番号も並記したい」というケースでは、両方を呼び出す必要があります。
A: 日付
B: =WEEKNUM(A2, 1) ← 日曜始まりの社内集計用
C: =ISOWEEKNUM(A2) ← ISO週番号(取引先・海外部門共有用)
複数チームで集計する場合は、どの列が何方式なのかをヘッダーに明記しておくと事故が減ります。
どちらを使うべきか
使い分けの目安はこちらです。
- 社内の週次レポート・集計: WEEKNUM関数がおすすめ。「1月1日=第1週」のほうが直感的で説明しやすいです
- 国際規格に合わせたい場合: ISOWEEKNUM関数を使います。海外拠点とのやり取りやISO準拠が求められる場面に向いています
- 年末年始をまたぐ集計: どちらを使うか事前に決めて統一しましょう。混在すると集計がズレる原因になります
- 製造業・物流の生産週番号: ISO週番号(ISOWEEKNUM関数)が業界標準として使われることが多いです
迷ったら、まずはWEEKNUM関数の月曜始まり(第2引数に「2」)で試してみてください。
WEEKNUM関数を使うときのチェックリスト
実務でWEEKNUM関数を使う前に、次の3点を確認しておくとミスが減ります。
- 第2引数を省略していないか: 省略すると日曜始まり。日本のビジネス慣習と1日ズレるので、月曜始まりにしたいなら必ず「2」または「11」を渡す
- 集計時に年も条件に入れているか: SUMIFSなどで集計するとき、週番号だけだと別年の同じ週が混ざる
- ISOWEEKNUMと混在していないか: 同じシートに2方式があると数値の意味がブレる。列名やコメントで方式を明記する
最初にこの3点を決めておけば、後から見直して「このシートの週番号って何方式?」と迷うことがなくなりますよ。
まとめ
WEEKNUM関数は、日付から週番号を自動で取得できる関数です。
- 基本構文:
=WEEKNUM(シリアル値, [週の基準]) - 日本のビジネスでは月曜始まり(第2引数に「2」または「11」)が使いやすい
- 週別集計はSUMIFS連携で効率化できる(補助列に週番号と年を出しておくのがコツ)
- スケジュール表では条件付き書式と組み合わせて「今週・来週」を自動色分けできる
- ISOWEEKNUM関数との違いは「第1週の決め方」と「週開始曜日の固定/可変」。社内集計ならWEEKNUM、国際規格に合わせるならISOWEEKNUM
- エラーは #VALUE!(日付ではなく文字列)と #NUM!(不正な第2引数)の2つを押さえれば対処できる
週別の売上管理や進捗レポートに、ぜひ活用してみてください。 WORKDAY関数やNETWORKDAYS関数と組み合わせれば、日付まわりの業務をさらに自動化できますよ。
