[エクセル中級] セルに曜日を表示する3つの方法:INDEX関数とWEEKDAY関数を使う方法
2018/04/07
日付が分かっていて、その曜日をセルに表示したい。その方法です。ここでは、WEEKDAY関数 と INDEX関数 を使って実現します。
他にTEXT関数で実現する方法と表示形式で実現する方法があります。
目次
メリット・デメリット
この方法のメリット
TEXT関数や表示形式を使った場合は、日本語版Windowsでは「日, 月, 火, …」と「日曜日, 月曜日, 火曜日, …」の2種類しか使用できません。
この方法では、それ以外の文字列も自由に使用できます。「にちようび」「Sunday」「日曜」や、曜日を表す特殊文字(括弧囲み「㈪」,丸囲み「㊋」など)、絵文字など自由に設定できます。
Windowsの設定にも依存しないので、他のPCで実行した際に思わぬエラーに見舞われる心配もありません。設定を変更している場合や英語版Windowsでも全く同じように「にちようび」などと表示できます。
この方法では、実際に B1 セルが「木」という文字列になるので、参照した際にそのまま文字列として処理できます。例えば、
=IF(OR(B1="土",B1="日),"休日の処理","平日の処理")のようなことができます。これは、TEXT関数で実現する方法でも同様ですが、表示形式で実現する方法ではできません。
この方法のデメリット
この方法では、「日曜」「月曜」など七曜のすべての文字列を用意しないといけません。オートフィルできるとはいえ、やや面倒です。
応用編にある、曜日に対応する文字列の埋め込みをしない場合は、曜日の文字列が書かれた7つのセルを用意しないといけません。
WEEKDAY関数 で曜日を表す数値を取得
まずは関数で曜日を数値として取得します。ここでは、日曜が1, 月曜が2, …, 土曜が7 になる種類「1」を使います。
- WEEKDAY関数
- 日付に対応する曜日を 0~6または1~7の整数で返します。どの曜日がどの数字になるかは[種類]で設定できます。
シリアル値 日付を表す数値。 種類 [オプション] 下表参照。省略時は1。 種類 日 月 火 水 木 金 土 1 1 2 3 4 5 6 7 2 7 1 2 3 4 5 6 3 6 0 1 2 3 4 5 11 7 1 2 3 4 5 6 12 6 7 1 2 3 4 5 13 5 6 7 1 2 3 4 14 4 5 6 7 1 2 3 15 3 4 5 6 7 1 2 16 2 3 4 5 6 7 1 17 1 2 3 4 5 6 7 ※ 分かりやすくするために、0, 1, 7のみ赤にしました。
基本は「日曜始まり」の1と、「月曜始まり」の2です。
11~17は後から(たぶんExcel 2007)追加されたもので、どの曜日からでも開始できるようになっています。
曜日を表す数値になりました。
INDEX関数 で曜日を文字列に変換
- INDEX関数
- 指定された行と列が交差する位置にある値またはセルの参照を返す。
配列 セル範囲 または 配列定数 を指定する。 行番号 配列の中で参照したい行を数値で指定する。[行番号]と[列番号]の少なくとも一方は指定する必要があるが、片方は省略してもよい。 列番号 配列の中で参照したい列を数値で指定する。 例:=INDEX({"A";"B";"C"},2) は[配列]の2番目である「B」を返します。
※ 複数の範囲を参照して、領域番号を指定することもできますが、ここでは省略します。
手っ取り早い方法は、[配列]をセルの参照にしてしまうことです。日曜から土曜までを順に並べたセルを作っておいて、そこを[配列]に指定します。
今回は5番目なので、「木」が取り出されました。
一つのセルにまとめる
WEEKDAY関数 と INDEX関数 を一つのセルにまとめます。
B1: =INDEX(A3:A9,WEEKDAY(A1,1))
これで曜日の文字列になりました! お疲れさまでした。
応用:曜日の文字列を埋め込む
INDEX関数 で参照していた曜日を表す文字列を関数に埋め込めば、単独のセルだけで曜日の文字列に変換できます。
配列は中括弧{}で囲んだ中に、セミコロン;区切りでデータを列挙します。7個並べるのは面倒ですが、これで単独のセルで曜日への変換ができるようになりました。
B1: =INDEX({"日";"月";"火";"水";"木";"金";"土"},WEEKDAY(A1,1))
これをしておけば作業用セルがいらなくなるので、「A1」の部分さえ変えれば他のシートやブックでも気軽に使えるようになります。
ただ、表示を変えたくなったとき(日→日曜に変更など)には、この関数を使っているすべてのセルに数式をペーストしないといけないので大変です。作業用セルを使う場合は、曜日の書いてあるセルを書き換えれば、参照しているすべての曜日表示が書き換わりますからね。
用途に応じて使い分けましょう。