- PCソフトウェア
- 2019年6月21日
エクセルで日付の計算を関数で行う。 date関数を使い年・月・日の値を指定して求める
日付を処理する関数 エクセルには、合計を求める、平均を求める、最大値・最小……
エクセルの作表において【日付】の持つ意味合いは大きく、特に西暦や元号での表示方法について考慮するとともに【月・火・水・木・金・土・日】といった曜日表示も大事だと考えています。
その考え方からエクセルで入力した日付と一緒に曜日を表示するおすすめの方法として、先日セルの書式設定と関数で設定するやり方について前回記事にしました。
そして、エクセルで入力した日付と一緒に曜日の表示ができるようになると、エクセルでの表示に新たな欲が出てきます。
それは「特定の曜日に色を付けたい」です。エクセルのサポートで日付入力や表示形式含め、曜日の表示方法について説明をするとよく質問を受ける内容です。
カレンダーを思い浮かべるか、実際手に取ってみてもらうとわかると思うのですが、【 日曜日を赤く】、【土曜日を青色】で表示されたものが多いのではないでしょうか。
エクセルで入力した日付に対し、日曜日にあたる日付と曜日を赤色にして、土曜日にあたる日付と曜日を青にするという新たな見栄えへの欲です。
この文字の色を変えるということを上図のように、エクセルの文字色を変えるなんて方法でやってしまっては何にもなりません。
1回限りの日付・曜日であればよいのですが月が替わったら、年が変わったら入力した日付と曜日が変わったとしてもその日付と曜日にあった色に変わるように設定するのか今回の目標となります。
日曜日を赤色・土曜日を青色に表示するには、その日付が何曜日なのかを取得する関数と、ある条件化で書式を変える「条件付き書式」を組み合わせて実現します。
まずは完成形を作ってみます2024年7月の日付で考えてみます。日付と曜日を一緒のセルで表示しても別のセルで表示しても考え方は同じです。
日付列では日付と曜日を表示する設定としています。その日付部分に条件付き書式設定で色を変える書式ルールの設定を行いました。
土曜日にあたる日付の文字部分を青色に設定し、日曜日にあたる日付の文字部分を赤色に設定するという、2つの条件付き書式が設定されています。
リボンの【条件付き書式】→【新しいルール】とクリックし新しい書式ルールダイアログを表示します。
【数式を使用して、書式設定するセルを決定】をクリックし、設定に進みます
【数式:=WEEKDAY(A4)=7 】はWEEKDAY()関数にA4セルに入力された日付:シリアル値を引数として計算させ、その結果が7、すなわち土曜日ならば、書式設定で文字色を青に変更してくださいという指示です。
続けて新しいルールとして日曜日も同じように設定行います。
【数式:=WEEKDAY(A4)=1 】はWEEKDAY()関数にA4セルに入力された日付:シリアル値を引数として計算させ、その結果が1ならば、書式設定で文字色を赤に変更してくださいという指示です。
エクセルでは新しく設定したルール毎に管理されていて、設定したルールを確認することができます。
今回日付と曜日が表示されたセル【 A4 】を選択した状態で条件付き書式設定を行ったため、その適用先が【 A4 】セル単独になってしまいます。
【条件付き書式】→【ルールの管理】とクリックして、条件付き書式の設定状態を確認すると【適用先:=$A$4 】となっていることが分かります。
設定したルールを日付を表示するセル全体に反映させるため、それぞれの適用先を【 =$A$4:$A$34】と日付が入力されたセルを選びなおして設定を行っています。
日付の色を変えたいセル範囲をあらかじめ選んでから、土曜日・日曜日の条件付き書式設定することもできます。
設定の出来上がりのイメージです
エクセルの関数説明などで=WEEKDAY(シリアル値, [種類]:省略可)と関数の説明があり、シリアル値に日付を引数として計算します。
シリアル値(日付)が日曜日にあたる場合は1,月曜日にあたる場合は2・・・ 、土曜日にあたる場合には7が計算結果として求まります。
シリアル値 | 日 | 月 | 火 | 水 | 木 | 金 | 土 |
結果 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
その計算結果をもとにして、日曜日の場合WEEKDAY(シリアル値)の結果が1の時に、そのセルの文字列を赤色に設定する。
同じようにして、土曜日の場合すなわちWEEKDAY(シリアル値)の計算結果が7の時に、そのセルの文字列を青色にしているということです。
WEEKDAY関数の計算結果は曜日に合わせて1~7の値が求められています。7種類に分類されることから、日曜日の場合に書式の設定を変更し、土曜日の場合に書式の設定といった判断に使えるわけです。
エクセルで曜日を処理することについてネットで検索するとよく出てくるのはWEEKDAY()関数ですが、計算の結果として7種類に分けられることを違う視点から考えてみたいと思います。
シリアル値は以前1900年1月1日を1として1日ごとに1ずつ増加する値ですと簡単に説明したことがあります。
2024年7月の日付と一緒にこのシリアル値を表示してみます。日付の右隣にシリアル値の列を設けて、【 =A4 】と入力すると日付の書式設定が行われてしまい、元号表示になってしまったので、書式設定で【 標準 】にします。
令和6年(2024年)7月1日・・・・45474
令和6年(2024年)7月2日・・・・45475
令和6年(2024年)7月3日・・・・45476
と日付が変わるごとにシリアル値が1ずつ増加していることが分かると思います。
つぎにこのシリアル値を7で割った余りを計算してみます。【 =MOD(数値, 除数)】であまりを求めることができます。
7で割り切れるときがあまり0,それ以外はあまりが1,2, 3, 4, 5, 6となるはずです。
同じようにWEEKDAY()関数で計算する列を設け計算してみます。
それぞれの計算結果はこの通りです。
曜日と一緒に表示しているのでわかるかと思いますが、7で割った余りは0~6と7種類に分類できていて、WEEKDAY()関数では1~7で7種類に分類されています。
土曜日にあたる日付でシリアル値を7で割った余りが0となり、WEEKDAY()関数の計算結果7との違いがありますが、それ以外は1~6の値が一致しています。
曜日は7種類だから、7で割って余りを考えてみることでWEEKDAY()関数との関係を考えてみました。計算の結果が完全一致というわけではありませんが、計算を行って7種類に分類しているということは伝わってくるのではないでしょうか。
たしかにエクセルで曜日に色を付けるとき、WEEKDAY()関数がペアのような考え方や説明が多いのですが、それ以外の考え方もあるということを知っていただけると幸いです。
エクセルの作表において重要な要素となる日付。元号で表示したい・西暦で表示したい。それだけでなく曜日も欲しい。
日付にまつわる表示方法が多種多様ですが、エクセルは表示形式の変更や関数利用によりその表示方法の要求にこたえてくれます。
今回日付と曜日を表示する方法の説明に続き、曜日に色を付ける方法へと説明してきましたが、説明した方法以外にも設定できるかもしれないと柔軟な発想をもっていただければと思っています。