ISOWEEKNUM関数&Excel 2010代替策 早見表

Excel週番号計算の完全ガイド

キーボードの左右矢印キー、または画面下の矢印ボタンで操作できます。

はじめに

この早見表は、ExcelでISO 8601規格に基づいた週番号を扱う際に役立つ「ISOWEEKNUM関数」と、Excel 2010環境での代替方法、関連情報をまとめたものです。

印刷して手元に置けば、必要な時にいつでも確認できます。

1. ISOWEEKNUM関数 基本情報

ISOWEEKNUM関数は、国際標準化機構(ISO)が定めたISO 8601規格に基づいて、指定された日付がその年の何週目にあたるかを返します。

項目 説明
目的 ISO 8601規格に基づいた週番号 (1~53) を返します。
(週は月曜日から始まり、その年の最初の木曜日を含む週が第1週となります)
構文 =ISOWEEKNUM(日付)

1. ISOWEEKNUM関数 基本情報 (続き)

項目 説明
引数 日付 週番号を求めたい日付を指定します。日付のシリアル値、または日付を表す文字列が使えます。必須項目です。
例: A1 (A1セルに日付が入力されている場合)、"2024/5/15"DATE(2024,5,15)
注意点
  • 引数 日付 に日付以外の値を指定すると #VALUE! エラーが発生します。
  • Excelのバージョンによっては使用できません (下記参照)。
利用可能Ver. Excel 2013以降, Excel for Microsoft 365, Excel Online, Excel for Mac (2016以降), Excel for Android, Excel for iOS
(Excel 2010以前では #NAME? エラーが表示されます)

凡例: A1 は日付データが入力されているセルを指します。

2. WEEKNUM関数との主な違い

ExcelにはISOWEEKNUM関数と似たWEEKNUM関数がありますが、週の定義方法に違いがあります。

比較項目 ISOWEEKNUM関数 WEEKNUM関数
準拠規格 ISO 8601 Excel独自のルール (一部の引数設定でISO 8601準拠の計算も可能 ※Excel 2010以降)
週の開始曜日 月曜日 (固定) 日曜日 (デフォルト)、または第2引数 週の基準 で月曜日なども指定可能
年の最初の週の定義 その年の「最初の木曜日」を含む週 (ISO 8601ルール) 1月1日を含む週 (デフォルト)、または第2引数 週の基準 で「最初の木曜日」ルールも選択可能
返り値の範囲 1 から 52 または 53 1 から 52 または 53
使用推奨シーン 国際基準での週番号管理、海外とのデータ交換、正確な週番号が必要な場合 週の開始曜日を任意に設定したい国内向けの資料、特定の集計ルールがある場合

3. Excel 2010ユーザー向け ISOWEEKNUM代替策

Excel 2010のような環境ではISOWEEKNUM関数が搭載されていないため、以下の計算式で代用できます。

*以下の計算式中の A1 には、週番号を知りたい日付が入力されたセルを指定してください。

3.1. 代替案1: WEEKNUM関数を利用

(Excel 2010以降で有効)

計算式:

=WEEKNUM(A1,21)

説明:
WEEKNUM関数の第2引数 21 は、「週の始まりを月曜日とし、その年の最初の木曜日を含む週を第1週とする」というISO 8601のルールに沿って週番号を計算します。

Excel 2010ユーザーへのポイント:
Excel 2010環境で最もシンプルで分かりやすい代替策です。Excel 2016などの新しいバージョンでも同じ結果が得られるので、ファイルの互換性も保ちやすいです。

注意:
この方法はExcel 2007以前のバージョンでは使用できません。

3.2. 代替案2: 互換性の高い計算式

(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

3.3. 代替案3: VBAユーザー定義関数 (参考)

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

3.3. 代替案3: VBAユーザー定義関数 (続き)

シートでの使用例:

=MyISOWeekNum(A1)

説明:
VBAエディタに上記の様なコードを記述し、ワークシート上で通常の関数と同じように =MyISOWeekNum(A1) と入力して使用します。

ポイント:
毎回長い数式を入力する手間を省きたい場合や、マクロを使った自動化の一部として組み込みたい場合に有効です。

注意点:

4. 年またぎの週番号ルール (ISO 8601のポイント)

ISOWEEKNUM関数 (および代替策) で週番号を計算する際は、年末年始の週番号が直感と異なる場合があるので注意が必要です。これはISO 8601のルールに基づきます。

4. 年またぎの週番号ルール (結果として)

結果として:

具体例:

5. よくあるエラーと対処ヒント

ISOWEEKNUM関数や代替策を使用する際によく見かけるエラーと、その原因・対処法のヒントです。

エラー 主な原因 対処法のヒント
#NAME?
  • 関数名のタイプミス: 例 ISO WEEKNUM (スペースがある)、ISOWEEKNUMBER など。
  • Excelのバージョンが古い: Excel 2010以前のバージョンではISOWEEKNUM関数が使えません。
  • 正しい関数名 ISOWEEKNUM を確認してください。
  • ご利用のExcelが2013以降か確認してください。
  • Excel 2010以前の場合は、「3. Excel 2010ユーザー向け ISOWEEKNUM代替策」を参照してください。

5. よくあるエラーと対処ヒント (続き)

エラー 主な原因 対処法のヒント
#VALUE!
  • 引数 日付 が有効な日付データではない: (例: ただの文字列「会議」、数値 123、空のセルを参照している)
  • 日付のシリアル値がExcelのサポート範囲外: (非常に古い日付や未来すぎる日付)
  • 代替計算式内のセル参照が正しくない
  • セル参照 (A1 など) の場合、参照先のセルに正しく日付が入力されているか確認してください (例: 2024/5/152024-05-15)。
  • 日付に見える文字列 (例: 2024.05.15) は、Excelが日付と認識していない場合があります。DATEVALUE関数 (=DATEVALUE("2024.05.15")) などでシリアル値に変換することを検討してください。
  • Excelが扱える日付の範囲内 (通常、1900年1月1日以降) であるか確認してください。
  • 代替計算式内の A1 が、日付の入ったセルを正しく指しているか確認してください。

ぜひご活用ください!

この早見表はブログ記事の補助資料として作成されました。

(凡例: 特に断りがない限り、計算式中の A1日付 は、日付データが入力されているセル、または日付そのものを指します)