目次
Microsoft Excelには、曜日、月、年を扱う関数が多数用意されていますが、週を扱う関数はWEEKNUMだけです。 つまり、日付から週番号を取得する方法を探しているなら、WEEKNUMはお望みの関数なのです。
このチュートリアルでは、Excel WEEKNUMの構文と引数について簡単に説明し、その後、ExcelワークシートでWEEKNUM関数を使用して週番号を計算する方法を示すいくつかの数式例について説明します。
ExcelのWEEKNUM関数 - 構文
WEEKNUM関数は、Excelで、ある年の特定の日付の週番号を返す関数です(1~54の数字)。 2つの引数があり、1番目は必須、2番目は任意です。
WEEKNUM(シリアル番号, [return_type])。- シリアル番号 - 日付を含むセルへの参照、DATE関数で入力した日付、または他の数式で返した日付。
- リターンタイプ (オプション) - 週の始まりの日を決定する数字です。 省略された場合、デフォルトのタイプ1が使用されます (日曜日から始まる週)。
以下は、その全リストです。 return_type
WEEKNUM式でサポートされている値です。
リターンタイプ | の週が始まります。 |
1 または 17 または省略 | 日曜日 |
2または11 | 月曜日 |
12 | 火曜日 |
13 | 水曜日 |
14 | 木曜日 |
15 | 金曜日 |
16 | 土曜日 |
21 | 月曜日 (システム 2 で使用。詳細は下記をご覧ください。) |
WEEKNUM関数では、2つの異なる 週番号制 が使用されます。
- システム1. 1月1日を含む週を第1週とし、第1週と表記する。 この方式では、伝統的に日曜日が週の始まりとなる。
- システム2. ISO 8601日付時刻規格の一部であるISO週番号システムです。 このシステムでは、週は月曜日から始まり、その年の最初の木曜日を含む週を第1週とみなします。一般にヨーロッパの週番号システムとして知られ、主に政府や企業で会計年度や時間管理に使用されています。
システム 2 で使用されるリターンタイプ 21 を除き、上記のリターンタイプはすべてシステム 1 に適用される。
Excel 2007 以前のバージョンでは、オプション 1 と 2 のみ利用可能です。 戻り値のタイプ 11 ~ 21 は、Excel 2010 および Excel 2013 のみでサポートされています。
Excel WEEKNUM 日付を週番号に変換する公式(1~54まで)
次のスクリーンショットは、日付から週番号を取得する最も簡単な方法を示しています。 =WEEKNUM(A2)
の式で表されます。
上記式において return_type
引数が省略された場合は、デフォルトのタイプ1(日曜日から始まる週)が使用されることを意味します。
もし、他の曜日、例えば月曜日から始めたい場合は、2番目の引数に2を使用します。
=weeknum(a2, 2)
セルを参照する代わりに、DATE(年、月、日)関数などを使って、数式で直接日付を指定することができます。
=weeknum(日付(2015,4,15), 2)
上記の計算式では、2015年4月15日を含む週の数字で、月曜日から始まる16が返されます。
ExcelのWEEKNUM関数が単独で使われることはほとんどなく、他の関数と組み合わせて、週番号をもとにしたさまざまな計算を行うことが多いようです。
Excelで週番号を日付に変換する方法
ExcelのWEEKNUM関数で日付を週数に変換するのは簡単ですが、逆に週数を日付に変換する場合はどうしたらよいでしょうか。 残念ながら、これをすぐに実行できるExcel関数はありません。 そこで、自分で数式を作成する必要があります。
セルA2に年、B2に週番号を設定し、この週の開始日と終了日を計算したいとします。
注)この計算式の例は、ISOの週番号に基づき、月曜日から始まる週を想定しています。
を返す式です。 開始日 の週は以下の通りです。
=date(a2, 1, -2) - weekday(date(a2, 1, 3)) + b2 * 7
ここで、A2 は年、B2 は週番号である。
なお、この数式は日付を通し番号で返すので、日付として表示させるためには、セルにそれなりの書式を設定する必要があります。 詳しい方法は、Excelの日付書式の変更にあります。 そして、この数式が返す結果は以下の通りです。
もちろん、週番号を日付に変換する数式は些細なことで、そのロジックを理解するのに時間がかかるかもしれません。 とにかく、興味のある方には、意味のある説明をするように努めます。
ご覧のように、私たちの数式は2つの部分から構成されています。
日付(a2、1、-2) - 平日(日付(a2、1、3))。
- は、前年の最終月曜日の日付を計算します。B2 * 7
- は、週数に7(1週間の日数)をかけたものを加算して、当該週の月曜日(開始日)を求めます。
ISOの週番号制度では、第1週はその年の最初の木曜日を含む週です。 したがって、最初の月曜日は常に12月29日から1月4日の間にあります。 したがって、その日を見つけるためには、1月5日の直前の月曜日を見つけなければなりません。
Microsoft Excelでは、WEEKDAY関数を使って、日付から曜日を抽出することができます。 また、以下の一般的な数式を使って、任意の日付の直前の月曜日を取得することも可能です。
= 年月日 - ウィークデイ( 年月日 - 2)A2の年の1月5日の直前の月曜日を見つけることが最終目的であれば、以下のDATE関数を使うことができます。
=date(a2,1,5) - 平日(date(a2,1,3))
しかし、実際に必要なのは今年の最初の月曜日ではなく、前年の最後の月曜日です。 ですから、1月5日から7日を引く必要があり、最初のDATE関数で-2が得られます。
=date(a2,1,-2) - 平日(date(a2,1,3))
先ほど習ったトリッキーな計算式に比べれば 終了日 その週の日曜日を得るには、単純に6日間を 開始日 すなわち =D2+6
あるいは、計算式の中で直接6を足してもよい。
=date(a2, 1, -2) - weekday(date(a2, 1, 3)) + b2 * 7 + 6
数式が常に正しい日付を配信することを確認するために、次のスクリーンショットを見てください。 上で説明した開始日と終了日の数式は、それぞれD列とE列にコピーされています。
Excelで週番号を日付に変換する他の方法
ISO週日制に基づく上記の計算式が要件を満たさない場合は、以下の解決策のいずれかを試してみてください。
式1:1月1日を含む週を第1週とし、月~日の週を第1週とする。
もし、1月1日を含む週が第1週とみなされるような日付システムを使用している場合は、次の式を使用してください。
開始日
=date(a2,1,1) - 平日(date(a2,1,1),2) + (b2-1)*7 + 1
終了日
=date(a2,1,1)- weekday(date(a2,1,1),2) + b2*7
式2:1月1日を含む週を第1週とし、日・土の週を第2週とする。
これらの式は、上記の式と似ていますが、唯一の違いは、日曜日から土曜日の週について書かれていることです。
開始日
=date(a2,1,1) - 平日(date(a2,1,1),1) + (b2-1)*7 + 1
終了日
=date(a2,1,1)- weekday(date(a2,1,1),1) + b2*7
計算式3:常に1月1日、月-日の週からカウントを開始する。
以前の計算式では、今年か前年かにかかわらず、第1週の月曜日(または日曜日)を返しましたが、この開始日の計算式では、常に 1月1日 を、曜日に関係なく第1週の開始日として返します。 同様に、終了日の式は、常に 12月31日 を、曜日に関係なく、その年の最終週の終了日とする。 その他の点では、これらの式は上記の式 1 と同様に機能する。
開始日
=max(date(a2,1,1), date(a2,1,1) - 平日(date(a2,1,1),2) + (b2-1)*7 + 1)
終了日
=min(date(a2+1,1,0), date(a2,1,1) - 平日(date(a2,1,1),2)+b2*7)
式4:常に1月1日、日-土の週からカウントを開始する。
日曜から土曜までの週の開始日と終了日を計算するには、上記の数式を少し調整するだけです :)
開始日
=max(date(a2,1,1), date(a2,1,1) - 平日(date(a2,1,1),1) + (b2-1)*7 + 1)
終了日
=min(date(a2+1,1,0), date(a2,1,1) - 平日(date(a2,1,1),1)+b2*7)
週番号から月番号を取得する方法
週番号に対応する月を求めるには、この例で説明したように、指定した週の最初の日を求め、その式をExcelのMONTH関数で以下のように囲みます。
=月(日付(a2, 1, -2) - 平日(日付(a2, 1, 3)) + b2 * 7)
注)上記の計算式は、「1. ISO週間日付システム 例えば、2016年の場合、第1木曜日は1月7日なので、第1週は1月4日から始まります。
月の週番号の出し方(1〜6まで)
ビジネスロジックで特定の日付を対応する月内の週番号に変換する必要がある場合、WEEKNUM、DATE、MONTH関数を組み合わせて使用することができます。
セルA2に元の日付が入っていると仮定して、次の数式を使用して、1日に始まる週を計算します。 月曜日 (WEEKNUMのreturn_typeの引数に21があることに注意)。
=weeknum($a2,21)-weeknum(date(year($a2), month($a2),1),21)+1
日から1週間 日曜日 の場合、return_type 引数を省略する。
=weeknum($a2)-weeknum(date(year($a2), month($a2),1))+1
週番号で値を合計し、平均値を求める方法
Excelで日付を週番号に変換する方法がわかったところで、他の計算で週番号を使う方法を見てみましょう。
例えば、ある月の売上高があり、各週の合計を知りたいとします。
まず始めに、それぞれの販売に対応する週番号を調べましょう。 日付がA列、販売がB列の場合、コピーして =WEEKNUM(A2)
の式を、セル C2 から C 列全体に適用します。
そして、他の列(例えばE列)に週番号のリストを作り、次のSUMIF式で各週の売上を計算します。
=sumif($c$2:$c$15,$e2,$b$2:$b$15)です。
ここで、E2 は週番号である。
この例では、3月の売上を扱うので、次のスクリーンショットに示すように、週番号を10~14にしています。
同様に、ある週の売上平均を計算することができます。
=averageif($c$2:$c$15, $e2, $b$2:$b$15)
WEEKNUM式のヘルパー列がデータレイアウトにうまく適合しない場合、残念ですが、これを取り除く簡単な方法はありません。 したがって、SUMPRODUCTや、同様のシナリオのMONTH関数などの他の配列式内で使用することはできないのです。
週番号を基準にセルを強調表示する方法
例えば、ある列の日付の長いリストがあり、特定の週に関連するものだけを強調表示したいとします。 必要なのは、次のようなWEEKNUM式による条件付き書式ルールだけです。
=weeknum($a2)=10
下のスクリーンショットに示すように、このルールは2015年3月の第1週である第10週以内に行われた売上をハイライトします。 ルールはA2:B15に適用されるので、両方の列の値をハイライトします。 条件付き書式規則の作成については、こちらのチュートリアル「別のセルの値に基づくExcel条件付き書式」で詳しく説明されています。
以上、Excelで週番号を計算する方法、週番号を日付に変換する方法、日付から週番号を抽出する方法をご紹介しました。 今日学んだWEEKNUM式が、あなたのワークシートで役に立つことを願っています。 次回は、Excelでの年齢と年数の計算について説明します。 読んでいただきありがとうございます!来週お会いしましょう