Excel週番号計算の完全ガイド
キーボードの左右矢印キー、または画面下の矢印ボタンで操作できます。
この早見表は、ExcelでISO 8601規格に基づいた週番号を扱う際に役立つ「ISOWEEKNUM関数」と、Excel 2010環境での代替方法、関連情報をまとめたものです。
印刷して手元に置けば、必要な時にいつでも確認できます。
ISOWEEKNUM関数は、国際標準化機構(ISO)が定めたISO 8601規格に基づいて、指定された日付がその年の何週目にあたるかを返します。
項目 | 説明 |
---|---|
目的 | ISO 8601規格に基づいた週番号 (1~53) を返します。 (週は月曜日から始まり、その年の最初の木曜日を含む週が第1週となります) |
構文 | =ISOWEEKNUM(日付) |
項目 | 説明 |
---|---|
引数 日付 |
週番号を求めたい日付を指定します。日付のシリアル値、または日付を表す文字列が使えます。必須項目です。 例: A1 (A1セルに日付が入力されている場合)、"2024/5/15" 、DATE(2024,5,15) |
注意点 |
|
利用可能Ver. | Excel 2013以降, Excel for Microsoft 365, Excel Online, Excel for Mac (2016以降), Excel for Android, Excel for iOS (Excel 2010以前では #NAME? エラーが表示されます) |
凡例: A1
は日付データが入力されているセルを指します。
ExcelにはISOWEEKNUM関数と似たWEEKNUM関数がありますが、週の定義方法に違いがあります。
比較項目 | ISOWEEKNUM関数 | WEEKNUM関数 |
---|---|---|
準拠規格 | ISO 8601 | Excel独自のルール (一部の引数設定でISO 8601準拠の計算も可能 ※Excel 2010以降) |
週の開始曜日 | 月曜日 (固定) | 日曜日 (デフォルト)、または第2引数 週の基準 で月曜日なども指定可能 |
年の最初の週の定義 | その年の「最初の木曜日」を含む週 (ISO 8601ルール) | 1月1日を含む週 (デフォルト)、または第2引数 週の基準 で「最初の木曜日」ルールも選択可能 |
返り値の範囲 | 1 から 52 または 53 | 1 から 52 または 53 |
使用推奨シーン | 国際基準での週番号管理、海外とのデータ交換、正確な週番号が必要な場合 | 週の開始曜日を任意に設定したい国内向けの資料、特定の集計ルールがある場合 |
Excel 2010のような環境ではISOWEEKNUM関数が搭載されていないため、以下の計算式で代用できます。
*以下の計算式中の A1
には、週番号を知りたい日付が入力されたセルを指定してください。
(Excel 2010以降で有効)
計算式:
=WEEKNUM(A1,21)
説明:
WEEKNUM関数の第2引数 21
は、「週の始まりを月曜日とし、その年の最初の木曜日を含む週を第1週とする」というISO 8601のルールに沿って週番号を計算します。
Excel 2010ユーザーへのポイント:
Excel 2010環境で最もシンプルで分かりやすい代替策です。Excel 2016などの新しいバージョンでも同じ結果が得られるので、ファイルの互換性も保ちやすいです。
注意:
この方法はExcel 2007以前のバージョンでは使用できません。
(Excel 2007以前でも動作する可能性あり)
計算式 (コピペして使えます):
=INT((A1-SUM(MOD(DATE(YEAR(A1-MOD(A1-2,7)+3),1,2),{1E+99;7})*{1;-1})+5)/7)
説明:
この数式は、日付 (A1セル) を基に、その年の1月4日を含む週を第1週とし、月曜日始まりで週番号を計算します。これはISO 8601の定義の一つと等価です。
Excel 2010ユーザーへのポイント:
数式は複雑ですが、Excel 2010環境でISOWEEKNUM関数がない場合の確実な代替手段の一つとして覚えておくと便利です。特に古いバージョンのExcelファイルを開く可能性がある場合に役立ちます。
使用されている主な関数: INT
, SUM
, MOD
, DATE
, YEAR
Excel VBA (マクロ) を使用して、ISOWEEKNUM関数と同様の機能を持つオリジナルの関数 (ユーザー定義関数) を作成する方法もあります。
関数名例: MyISOWeekNum
VBAコード例:
' ------------------------------------------------------------
' ISO-8601 week-number (1-53) for any given date
' ✔ Excel 2013 以降 ─ WorksheetFunction.ISOWEEKNUM を優先使用
' ✔ Excel 2010 以前 ─ VBA fallback で完全互換
' (DatePart + 「木曜日ベース」アルゴリズム)
' ------------------------------------------------------------
Option Explicit
'返り値: ISO 週番号(1-53)
Public Function MyISOWeekNum(ByVal targetDate As Date) As Integer
'―――――――――――――――――――――――――――――――――――――――――
' ① Excel 2013 以降なら組み込み関数をそのまま呼び出し
'―――――――――――――――――――――――――――――――――――――――――
On Error Resume Next ' ← 古いバージョンではエラーになるため抑止
MyISOWeekNum = _
Application.WorksheetFunction.IsoWeekNum(targetDate)
If Err.Number = 0 Then Exit Function ' 成功したらここで終了
On Error GoTo 0 ' エラー抑止を解除
'―――――――――――――――――――――――――――――――――――――――――
' ② Excel 2010 以前用の VBA 実装
' ・ISO 週は「木曜日の属する週」を基準とする
' ・DatePart("ww", …, vbMonday, vbFirstFourDays) は
' 週の開始を月曜、週番号の決定に "最初の 4 日を含む週" を採用
'―――――――――――――――――――――――――――――――――――――――――
Dim thursday As Date
thursday = targetDate - Weekday(targetDate, vbMonday) + 4 ' 同週の木曜日
MyISOWeekNum = DatePart("ww", thursday, vbMonday, vbFirstFourDays)
End Function
シートでの使用例:
=MyISOWeekNum(A1)
説明:
VBAエディタに上記の様なコードを記述し、ワークシート上で通常の関数と同じように =MyISOWeekNum(A1)
と入力して使用します。
ポイント:
毎回長い数式を入力する手間を省きたい場合や、マクロを使った自動化の一部として組み込みたい場合に有効です。
注意点:
.xlsm
) で保存する必要があります。ISOWEEKNUM関数 (および代替策) で週番号を計算する際は、年末年始の週番号が直感と異なる場合があるので注意が必要です。これはISO 8601のルールに基づきます。
結果として:
具体例:
2025年12月29日 (月)
のISOWEEKNUMは 1
(つまり、2026年の第1週) となります。2026年1月1日 (木)
のISOWEEKNUMは 1
(2026年の第1週) となります。2024年1月1日 (月)
のISOWEEKNUMは 1
(2024年の第1週) となります。2021年1月1日 (金)
のISOWEEKNUMは 53
(つまり、2020年の第53週) となります。ISOWEEKNUM関数や代替策を使用する際によく見かけるエラーと、その原因・対処法のヒントです。
エラー | 主な原因 | 対処法のヒント |
---|---|---|
#NAME? |
|
|
エラー | 主な原因 | 対処法のヒント |
---|---|---|
#VALUE! |
|
|
この早見表はブログ記事の補助資料として作成されました。
より詳しい解説や具体的な操作手順については、ぜひ記事本文をご参照ください。
(凡例: 特に断りがない限り、計算式中の A1
や 日付
は、日付データが入力されているセル、または日付そのものを指します)