こんにちは、デジタル事業本部の藤田です。
以前「Excelでガントチャートを作成する」という記事で Excel のセルに曜日によって色をつける設定をしました。
この方法は条件付き書式という機能で行っています。
● 日付から曜日の判別
まず、例としてセル B1に日付を入力します。
Excel は入力した内容からセルの書式を認識して日付形式にしてくれます。親切なのかお節介なのかわかりませんがいかにも Micr◯s◯ft 的な機能ですね。それはともかく、自動的に日付形式の書式になりました。
次に、横のセルに以下の関数を入れます。
=WEEKDAY(B1)
WEEKDAY 関数は指定した日付から曜日番号を返します(参考:WEEKDAY 関数)。曜日番号というのは日曜日が1、月曜日が2…と続き土曜日の7まで続くインデックスのことです。デフォルトでは日曜スタートとなっていますが、オプションの指定で月曜スタートにしたり、最初の値を0に設定することができます(詳細はヘルプを参照)。例の場合では2016年1月23日が土曜日なので7が返されました。
とはいえ、曜日を番号ではなくちゃんと文字で表示させたいものです。というわけで関数に手を加えてみました。
=CHOOSE(WEEKDAY(B1),"日","月","火","水","木","金","土")
CHOOSE 関数は、インデックスから値を返します(参考:CHOOSE 関数)。例では WEEKDAY 関数から2016年1月23日→7を返しているので、CHOOSE 関数によって「土(曜日)」が返されました。
あとは、セルの内容を下へフィルコピーしていくと日付と曜日が自動的に作成されます。
● ユーザー定義で曜日を表示
しかし、関数を組み合わせなくても曜日は表示する方法はあります。セルの書式設定→ユーザー定義で m"月"d"日"(aaa) と入力すると…。
この aaa がくせ者で、Excel では曜日を表す記号だったりします(参考:Excel での曜日入力、色付け機能を初心者向けにわかりやすく解説)。ちなみに m は月、d は日をあらわします(日付形式の場合)。これで 1月23日(土) という表記になりました!
ちなみに、aaaa と入力すると 1月23日(土曜日) という表記になります。2通りの方法で曜日入り日付表記を作成することができました。
● 条件付き書式で曜日ごとにセルへ色づけ
では、曜日ごとに色をつける処理を条件付き書式で設定します。先ほど使用した WEEKDAY 関数を条件付き書式で設定します。条件付き書式→書式ルールの編集で、「数式を使用して、書式設定するセルを決定」で下記の関数を入力します。
土曜日の場合:=WEEKDAY(A1)=7 ※「書式」はセルを青に塗りつぶす設定。
日曜日の場合:=WEEKDAY(A1)=1 ※「書式」はセルを赤に塗りつぶす設定。
条件付き書式→ルールの管理→適用先には書式を反映させる範囲を入力します。
これで、セルに曜日によって色をつける設定ができました! 土曜日の場合はセルが 青 に、日曜日の場合はセルが 赤 になります。記事の冒頭で紹介した「Excelでガントチャートを作成する」では Excel シートにこの条件付き書式の設定をしてあります。
● 祝日もセルは色をつける
さらに、祝日(2月11日:建国記念の日)も色をつける処理を条件付き書式で設定しています。月が2であり、かつ日が11であるかどうかを確認して TRUE であれば色がつきます。条件付き書式→書式ルールの編集には下記の関数を入力します。
=AND(MONTH(A1)=2,DAY(A1)=11) ※「書式」はセルを赤に塗りつぶす設定。
条件付き書式で土・日・祝日のセルに対して自動的に色を塗り分けることができました。
● 2つのシートを比較する
さて、ここからは条件付き書式の応用編です。Excel の2つのシートを比較するスクリプトを考えてみました。変更前と変更後に同じアドレスの違いのあるセルに 赤く色をつける 仕様となっています。どこかに修正があるのだけれど、見た目では判別しにくい場合に有用です。
Mac 用には AppleScript で、Windows 用にも VBA で同じ処理を行えるようにしました。変更前と変更後のシートを開き、AppleScript または VBA を実行すると新しいブックが作成されて、2つのシートを比較した結果が作成されます(元のシートにはなにも影響はありません)。
このスクリプトはタクトシステムのHPでお試し版を配布していますので、よろしかったらぜひダウンロードしてください。