週次レポートを作成する際、データを週ごとにまとめたいとお考えではありませんか。日付が多くあるシートで、どのデータが何週目に属するのかを自動で判別できれば、集計やグラフ作成が格段に楽になります。本記事では、GoogleスプレッドシートのWEEKNUM関数を使って週番号を取得し、週次レポートのキーを生成する方法を解説します。基本の使い方から応用テクニックまでご紹介しますので、ぜひご活用ください。
【要点】WEEKNUM関数で週番号を取得し、週次レポートのキーを生成する方法
- =WEEKNUM(日付, [週の開始日]): 指定した日付の週番号を返す基本構文です。第2引数で週の開始曜日を指定できます。
- =YEAR(日付)&”-“&TEXT(WEEKNUM(日付),”00”): 年と週番号を連結して「2025-03」形式のキーを生成します。年度が変わっても一意になります。
- =WEEKNUM(日付, 21): ISO週番号(月曜始まり)を取得する引数です。国際基準の週番号が必要な場合に便利です。
ADVERTISEMENT
目次
WEEKNUM関数とは?週番号が週次レポートに役立つ理由
WEEKNUM関数は、日付からその日が年の中で何週目にあたるかを数値で返す関数です。第1引数に対象の日付を指定し、第2引数で週の開始曜日を選択できます。週次レポートでは、データを週単位で集計する必要がよくあります。WEEKNUM関数を使えば、日付が自動的に週番号に変換されるため、ピボットテーブルやQUERY関数で週ごとにグループ化しやすくなります。また、週番号を年と組み合わせてキーにすれば、異なる年の同じ週番号を区別できるようになります。このキーは、レポートの行ラベルやグラフの軸として活用できます。
WEEKNUM関数の基本構文と引数の意味
WEEKNUM関数の構文は次のとおりです。
=WEEKNUM(日付, [週の開始日])
第1引数「日付」には、週番号を求めたい日付を指定します。日付そのものか、日付を含むセル参照、DATE関数などを使います。第2引数「週の開始日」は省略可能で、システムのデフォルト(通常は日曜始まり)が使われます。以下の代表的な引数値を覚えておきましょう。
| 引数 | 意味 |
|---|---|
| 1 | 日曜始まり(システムデフォルト) |
| 2 | 月曜始まり |
| 11 | 月曜始まり(最初の週は1月1日を含む週) |
| 21 | ISO週番号(月曜始まり、最初の週はその年の最初の木曜日を含む週) |
実際に使う場面で最も多いのは引数2(月曜始まり)と21(ISO週番号)です。日本の会社では月曜始まりの週次レポートが多いため、引数2をよく使います。ISO週番号は国際標準で、1月1日がどの週に属するかが厳密に決まっているため、グローバルなレポートに適しています。
週次レポートのキーを生成する手順
基本のWEEKNUM関数を使う
- 日付データを用意する
表のA列に日付が入力されているとします。例えばA2セルに2025/4/1という日付が入っている場合、B2セルに次の式を入力します。=WEEKNUM(A2, 2) - 週番号を確認する
B2セルに「14」のような数字が表示されます。引数2は月曜始まりなので、2025/4/1(火曜)は第14週になります。この式を下にオートフィルすれば、すべての日付の週番号が一瞬で取得できます。 - 年と結合して一意のキーを作る
週番号だけだと年が変わったときに同じ番号が重複します。そこで、C2セルに次の式を入力します。=YEAR(A2)&”-“&TEXT(WEEKNUM(A2, 2),”00”)
これで「2025-14」のようなキーが得られます。TEXT関数で週番号を2桁にしているので、並べ替えても正しく順序が並びます。
年度をまたぐ場合の注意
- 会計年度を考慮する
会社によっては会計年度が4月始まりの場合があります。その場合はYEAR関数の代わりに、年度を計算する数式を入れます。例えば4月始まり年度なら、=IF(MONTH(A2)>=4, YEAR(A2), YEAR(A2)-1)で年度を取得し、それをキーに含めます。 - ISO週番号で年をまたぐ
ISO週番号では、1月1日が前年の最終週に含まれる場合があります。そのため、キーに年を含めるにはYEAR関数ではなく、=YEAR(A2- (WEEKDAY(A2,3)+3))のようなISO年の計算式が必要です。簡易的にはWEEKNUMと同時にYEARを使うとズレることがあるため注意します。
キーをさらに加工してレポートに使う
- 週の開始日を表示する
キーに加えて、その週の月曜日を表示したい場合があります。その場合は、=A2-WEEKDAY(A2,2)+1で月曜日を求めます。この日付をキーと組み合わせて、レポートの見出しに使えます。 - QUERY関数で週ごとに集計する
キー列を使って、QUERY関数で週別の売上合計などを集計できます。例:=QUERY(A:C, “select C, sum(B) where A is not null group by C label sum(B) ””, 1)とすれば、C列のキーごとにB列の数値を合計できます。
ADVERTISEMENT
WEEKNUM関数使用時の注意点とよくあるミス
週の開始日が間違っている
WEEKNUM関数の第2引数を省略すると、システムの地域設定に依存します。多くの場合、日曜始まり(引数1)として処理されますが、月曜始まりのレポートを作成したいのに気づかずに使うと、週の区分がずれてしまいます。必ず明示的に引数2または21を指定する習慣をつけましょう。もしくは、メニューの「ファイル」→「設定」→「計算」で週の開始日を変更することもできますが、他の処理に影響を与える可能性があるため、関数内で指定するほうが安全です。
年が変わったときの週番号の扱い
年が変わる際、例えば2025年12月31日(水曜)が第53週、2026年1月1日(木曜)が第1週になるとは限りません。ISO週番号では、2025年12月31日が2026年の第1週に含まれることもあります。このような場合、単純にYEARとWEEKNUMを連結すると「2025-53」と「2026-01」のように年が分かれてしまい、同じ週なのに別キーになる問題が発生します。対策として、ISO週番号を使うときは年もISO年で統一する必要があります。先述のISO年計算式を組み込むか、=TEXT(A2, “YYYY”)&”-“&TEXT(WEEKNUM(A2,21),”00”)とすると、年がずれるケースが発生するため注意が必要です。より正確には、週番号から週の開始日を逆算して年を決める方法もあります。
データ型がテキストになる場合
WEEKNUM関数は数値を返します。しかし、YEARやTEXTと組み合わせると結果はテキスト文字列になります。そのテキストを後続の計算で再利用するときは、数値として扱いたい場合にVALUE関数で変換する必要があります。また、並べ替えの際に「2025-14」と「2025-2」が文字列として並ぶと、「2025-14」のほうが先になる(先頭文字が同じなので次の文字を比較する)など、意図しない順序になることがあります。TEXT関数で週番号を0埋めして2桁にすることで、この問題を回避できます。
WEEKNUM関数とWEEKNUM_ISO関数の比較
| 比較項目 | WEEKNUM関数 | WEEKNUM_ISO関数 |
|---|---|---|
| 構文 | =WEEKNUM(日付, [週の開始日]) | =WEEKNUM_ISO(日付) |
| 週の開始日 | 引数で指定可能(1:日曜,2:月曜,21:ISO準拠など) | 常に月曜始まり(ISO8601準拠) |
| 年の扱い | 引数21を指定した場合のみISO年のルールに従う | 常にISO年のルールで週番号を計算 |
| 引数の数 | 2(第2引数省略可) | 1(開始日指定不可) |
| 使用シーン | 日本国内の週次レポート、月曜始まりや日曜始まりを柔軟に選びたい場合 | 国際基準のレポート、海外拠点との統一が必要な場合 |
WEEKNUM_ISO関数は引数が少なくシンプルですが、柔軟性に欠けます。一方、WEEKNUM関数は引数で開始日を細かく設定できるため、国内業務にはこちらが便利です。ISO準拠が必要ならWEEKNUMに関数引数21を指定しても同じ結果が得られます。
まとめ
WEEKNUM関数を使えば、日付から週番号を簡単に取得でき、週次レポートのキーとして活用できます。基本の式にYEARとTEXTを組み合わせることで、年をまたいでも一意のキーが生成できるようになりました。また、週の開始日やISO週番号を使い分けることで、さまざまなレポート形式に対応できます。本記事で紹介した手順を実際のシートで試し、キーをQUERY関数やピボットテーブルに応用してみてください。きっと週次集計の作業が大幅に効率化されるはずです。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
