エクセル自動カレンダー予定書き込み用を作成ー3「DATE関数で曜日を表示」
使用関数:DATE、IF
DATE関数で取得したシリアル値(年/月/日)から曜日を表示させます。「月・火・水…」「(月)・(火)・(水)…」「Mon.Tue.Wed.…」「月曜日・火曜日・水曜日…」など好みの表示形式にすることも可能。月末の29日・30日・31日についてはIF関数を使います。
1~28日までの曜日を取得
1日の曜日を表示させるセル(B3)をクリックして選択します。
「数式」タブ「関数ライブラリ」の「日付/時刻▼」リストの一番上にある「DATE」をクリックします。
前Stepで作業したのと同様に、「年」の引数にカーソルを置いてA1セルをクリックし、F4キーを叩いて絶対参照にします。続いて「月」の引数にカーソルを置いてA2セルをクリックし、これもF4キーを叩いて絶対参照にします。
最後に「日」の引数にカーソルを置いてA3セルをクリック。
ここは相対参照のままで、「OK」します。
▶絶対参照・相対参照についてわかりやすく
数式は「=DATE($A$1,$A$2,A3)」です。
でも、B3セルの表示は・・・「#####」…これって、エラー?!
エラーには違いないんですが、これはセル幅が不足してて表示しきれませんというエラーです。列幅を広げれば↓ちゃんと表示されるし、数式に問題はないので心配いりません。
ここはこのエラーを無視して、B3セルのフィルハンドルを28日(B30セル)まで引っ張ってオートフィルコピーします。
選択を解除せず、そのまま右クリックして表示されるメニューから「セルの書式設定」を選びます。
「セルの書式設定」ダイアログボックスの「表示形式」タブを開き、「分類」の最下部「ユーザー定義」をクリック。
「種類」のテキストボックスに入っている文字列を選択してから、半角英字で「aaa」と入力します。
上のサンプルで表示が確認できますね。「OK」すると、曜日が表示されます。
曜日の「表示形式」の種類には幾つかあり、入れ替えができます。
種類の入力値 | 表示サンプル |
aaa | 月 火 水 木 金 土 日 |
【aaa】(aaa)《aaa》 | 【月】【火】(水)(木)《金》《土》 |
aaaa | 月曜日 火曜日 水曜日 木曜日 金曜日 |
ddd | Mon Tue Wed Thu Fri Sat Sun |
dddd | Monday Tuesday Wednesday Thursday |
29日・30日・31日の曜日を取得する
月末の3日は、2月、小の月、大の月で日にちと同様に表示と非表示を切替える必要があります。ここでは、IF関数を使って設定します。
最初に、前章で1~28日の曜日セルに入れたDATE関数式をどれでもいいのでコピーしておきましょう。
ここでは1日の曜日に入れた「=DATE($A$1,$A$2,A3)」の「=」を抜かしてコピーしておきます。(B3セルをクリックして数式バーの式をドラッグして選択、Contrlキー+Cキーでコピー、のキャンセルボタンか入力ボタンをクリック)
29日の曜日を入れるセル(B31)を選択し、「数式」タブ「関数ライブラリ」の「論理▼」から「IF」を選んでクリック。
「IF関数の引数」ダイアログボックスが開いたら、「論理式」にカーソルがあることを確認して29日が入るセル(A31)をクリック。
「論理式」に「A31」と入ったら、その後に続けて「=""」と入力します。
これは比較的分かりやすい論理ですね。「""」は空欄を意味するダブルクォーテーションで、「A31=""」とは「A31セルが空なら…」というIF文です。
「真の場合」にはこの問いに対して肯定する値が入るわけですから、「""」と入れます。「A31セルが空なら…?」⇒「B31セルも空にします」という指定ですね。
「偽の場合」には前章で1~28日の曜日セルに入れたDATE関数式を流用します。
「偽の場合」にカーソルを置いてDATE関数のダイアログボックスを開いて設定してもいいんですが、ここは最初にコピーしておいた式をContrlキー+Vキーで貼り付け。
「DATE($A$1,$A$2,A3)」を「DATE($A$1,$A$2,A31)」に修正します。
「OK」して、B31セルに曜日が表示されたら、~B33までフィルコピーして完了です。