日付から曜日を算出

日付から「曜日」を算出する方法をまとめました。
「月」または「月曜日」をセルに表示させます   「曜日」を取り出すには「WEEKDAY関数」を用いますが、 取り出されるのは「曜日」を示す番号(1=,2=,3=,・・7=)です。
この「番号(1~7)」を「曜日」の「文字(日、月、火・・・土)」に置き換える必要があります。
また、別解として、「WEEKDAY関数」は使わずに「日付」だけでセル書式を使って「曜日」を表示させるという方法もあります。





「日月火水木金土」の文字列から当日曜日の1文字を取り出す。

曜日の判定
(画像をクリックすると、このページのサンプルがダウンロードできます)

画面の矢印ようにD2セルを見て下さい。
このセルの数式はこのようになっています。

 =MID("日月火水木金土",WEEKDAY($B$2),1)
MID関数」の各引数を基準に縦に並べると、

 =MID("日月火水木金土"
     ,WEEKDAY($B$2)
     ,1
     )
このようになります。



1引数(文字列)は「日月火水木金土」です。
2引数(開始位置)は「WEEKDAY関数」から返された「曜日(番号)」です。
3引数(文字数)は「1」固定です。
つまり、「日月火水木金土」の7文字から「曜日(番号)」の文字位置の1文字を取り出すことで「曜日」としています。



E列は単に「曜日」という文字列を接合させたものです。



関数概略説明
 WEEKDAY関数  日付に対応する曜日を返します。 既定では、戻り値は 1(日曜) から 7(土曜) までの範囲の整数となります。
  引数は次の通りです。
 ① 日付(シリアル値)
 ② 週の基準(省略可、省略時は上記の既定になります)
 MID関数  文字列の指定された位置から指定された文字数の文字を返します。 引数は次の通りです。
 ① 文字列
 ② 開始位置
 ③ 文字数



このサンプルでは「日月火水木金土」という文字列を直接数式の中に置いていますが、この数式を使うセルが多い場合は「日月火水木金土」はどこか未使用の隠れたセルに置いておいて、 数式ではそのセルを参照するようにした方が良いでしょう。

「日月火水木金土」は文字列ではなく配列にすることもできます。

曜日の判定

次はD3セルです。
WEEKDAY関数」は1つ上のサンプルと変わりませんが、 「日月火水木金土」については文字列ではなく配列にしてみたサンプルです。
配列から1要素を取り出すのは「INDEX関数」で行ないますが、 配列の生成を数式内で行なっているため、数式が「見た目」で長くなってしまいます。



考え方は文字列からの切り出しより多少効率が良いのかも知れませんが、「日月火水木金土」の持ち方は欄外のセル範囲とした方が良いでしょう。



関数概略説明
 INDEX関数  行番号、列番号により、テーブルにある値、またはセル範囲あるいはその値のセル参照を返します。
 引数は以下の通りです。
 ① 配列またはセル範囲
 ② 行番号(相対値)
 ③ 列番号(相対値)

そもそも関数や数式がないと「曜日」が表示できないわけではありません。

曜日の判定

次はD4セルです。
このセルの数式はB2セルを参照しているだけで、つまり「日付」のままです。ですが「曜日」が表示されています。



これはセルの書式で日付の表示形式(種類)を変えているだけです。

曜日の判定

「セルの書式設定」でこのセルを「ユーザー定義」の「aaa」に変更すると、サンプルにあるように「曜日」が表示されます。
さらに「aaaa」にするとE4セルのように「水曜日」と表示されます。

なお、土日はこのように青太字、赤太字になるようにしています。

曜日の判定

これは「条件付き書式」を設定しているもので、ルールには数式で「曜日(番号)」を指定させています。