2008年10月アーカイブ

土曜日を青く、日曜日を赤く

不満3「できたら土曜日は青、日曜日は赤で表示できたら良いのになぁ~」に挑戦です。

が、どうやったら自動的に文字の色が変わるのでしょうか???どこが土曜日、日曜日になるかなんて、カレンダーを表示させてみないとわからないことですからね。こんな時は、エクセルの「ちょこっとだけ」便利な条件付き書式を使うと便利なのです。

え?どうして「ちょこっとだけ」とカギ括弧でくくっているのかって?それはですねぇ、エクセル2003の場合、条件が「3つ」しかつけられないからなんです(涙)。ひとつの条件式に複数の条件を詰め込むこともできますが、

エクセル2003の場合、結果は最大で3種類!たったの3つしかないのです!!!

だから、「ちょこっとだけ」便利な機能なのです。ということで、3種類を言うことを頭に入れておいて作業していきましょう♪

本題に戻ります。

今回、土曜日と日曜日の色を変えたいので、幸いなことに書式の希望が3種以下なのでとても気楽に作業できます♪

まず、曜日の欄を1日から31日分まで(セルB5~セルB35)選択します。それから条件付き書式を開くのですが・・・。

条件付き書式は「書式」の中にあります(隠れていたら展開マークにマウスカーソルを持って行ってみてください♪)。

cal_081020_01.png

条件付き書式の画面が開いたら、「次の値~」のプルダウン(1)から「次の値に等しい」を選びます。

cal_081020_02.png

次に(2)に「7」を入力します。この「7」は WEEKDAY 関数で求められた値「7(土曜日)」を指します。日曜日が「1」、月曜日が「2」・・・となっているわけです。

次に「書式」ボタンをクリックして、セルの書式を決定します。セル全体を塗りつぶしても、文字の色だけかえても、それはあなたのお好みで。以下は土曜日なら文字の色を薄い青色にする設定です。

cal_081020_03.png

セルの書式画面のOKボタンをクリックし、条件付き書式画面のOKボタンもクリックしてみましょう。以下のように土曜日の「土」に変化が起きませんでしたか???

cal_081020_04.png

もし、なんの変化も現れていないようなら、「土」のセルを1つだけを選択して、もう一度やり直してみて下さい。もし、WEEKDAY 関数にオプションをつけたのなら、オプションに従って、1に対応する曜日が変わってきますので、それも合わせて確認して下さいね。

・・・では、日曜日もやってみましょう。条件付き書式の画面を開き、追加ボタンをクリックします。「条件2」が追加されますよ~。

cal_081020_05.png

「条件2」が追加されたことを確認したら、条件2欄の設定をします。条件1の土曜日同様、「次の値に等しい」を選びます。ただし、日曜日なので値は「1」となります。条件の設定が終わったら、また「書式」ボタンをクリックして書式を定義します。日曜日なので文字色を赤にしましょうか。

cal_081020_06.png

いかがなものでしょうか???えっ?日付の数字も色を変えた方がいいんじゃないかって?!う~ん、そうですね。確かに、その方がぱっと見でわかるカレンダーになりますよね。

確かに条件付き書式で設定可能なのですが、今回は「セルの値」ではなく「数式」を入れることにします。このように、条件付き書式では、他のセルの計算結果を基にセルの書式を変更することもできます。ただし、「書式」ボタンをクリックして出てきた書式以外は変えられませんけどね(苦笑)。

では早速作業してみましょう。

まず「1日」のセル(セルA5)を選択します。今回は日付のセルを全部まとめて設定できないので、セル1個だけ、まず作業しますね。

次におなじみになった「条件付き書式」画面を開きます。

cal_081020_07.png

条件1に土曜日の条件を入れていきます。まず、(1)「数式が」を選びます。(2)テキストボックスに

=B5=7

と、半角で入力します。B5はもちろんセルB5のことで、1日の曜日が表示されているセルのことです。このセルの値が「7(土曜日)」だったら・・・セルの書式を変更しなさい!と言うことになりますので、「書式」ボタンをクリックして、セルの書式を設定しましょう。

次に、「追加」ボタンをクリックして、条件2を表示させます。

条件2には日曜日の条件式を書いていきますので、土曜日(条件1)同様、「数式が」を選び、テキストボックスに、

=B5=1

として、「書式」ボタンをクリックしてセルの書式を設定します。

いったん、これで条件付き書式の設定を完了します。

1日(ついたち)のセルだけ変更しましたので、特別な変化はないですよね。1日が土曜日か日曜日なら変化があると思いますが・・・。

今さっき設定したのは「数式」でした。要するに、2日のセル(セルA6)に「セルB5(1日の曜日)」がなんなのかなんて設定しても意味がないのでやらなかったわけです。じゃぁ、これを1セルずつやっていくのか?いえいえ、書式ってコピーできるじゃないですか!!!

セルA5を選択してコピーします。セルA6からセル35までを選択して、「形式を選択して貼り付け」します。

cal_081020_08.png

形式を選択して貼り付けは「編集」の中にありますので、まずは画面を開きます。

cal_081020_09.png

画面が開いたら「貼り付け」カテゴリ内の「書式」ラジオボタンをオンにして、OKボタンをクリックします。

これで、土曜日と日曜日の日にちの色も変わったはずです。

次回では、祝日の設定を予定。

カレンダーの月末処理

あまり複雑なことはできませんが、2月や30日までの月は31日(29、30日)を表示しないくらいなら比較的簡単にできます。基本はカレンダーの定義をエクセルに反映させること。ただ、これだけです。やり方はいろいろあると思いますが、一例を紹介しますね♪

  • 1、3、5、7、8、10、12月は31日
  • 4、6、9、11月は30日
  • 年数が4の倍数の年をうるう年とする。ただし、100の倍数の年で400の倍数でない年は平年とする

この定義をまとめてみましょう。

  1. 1、3、5、7、8、10、12月は31日まである
  2. 2月以外は30日がある
  3. カレンダーはエクセルがシリアル値で管理しているので閏年の管理はいつ3月1日になるかで判定すればいい

考え方の一例なんですけど、いかがでしょう???もっといい定義があれば、もちろん、それにそって関数を組み立てて下さいね♪

さて、話は戻ります。

(1)の31日の件は、31日を表示するかどうかを判定するので「31日」に、(2)の件は30日を表示するかどうかを判定するので「30日」に、(3)は29日を表示するかどうかを判定するので「29日」に、関数を入れていきます。

では、具体的に。

とりあえず、31日のセルを選択します。先ほどコピーした関数はいったん忘れて、31日を表示するかしないかの関数に置き換えます。

31日まであるのは、1、3、5、7、8、10、12月なので、セルA2(月度設定セル)に、該当月が入力されているかどうかチェックします。チェックは IF 関数を使って判定します。「もし××ならば」の××部分に31日まである月を OR 関数を使って定義します。IF関数ですので、正しければ、セルA34(30日のセル)+1、正しくなければブランクとします。

=IF(OR(A2=1,A2=3,A2=5,A2=7,A2=8,A2=10,A2=12),A34+1,"")

これで、2、4、6、9、11月は31日がブランクになるはずです。

30日については2月以外は30日を表示すべきとわかっているので、IF 関数で、セルA2が2月ならブランク、そうでなければセルA33(29日)+1 とします。

=IF(A2=2,"",A33+1)

29日については、閏年の定義はさておき、エクセルがカレンダーを持っているのでなんの心配もいりません。セルA32(2月28日)に1を足して2月29日になれば29日を表示、セルA32に1を足して3月1日になればブランクとなります。29日があるのかないのかは、2月なのか3月なのかを調べればいいので、月度を取り出して比較します。セルA32(2月28日)+1 が A2(月度設定セル=2月)であるかどうかです。月度を取り出すには、MONTH関数を使います。(日付を取り出して29日かどうかを調べてもOKです♪)

=IF(MONTH(A32+1)=A2,A32+1,"")

これで、29~31日の設定ができました。2月などいろいろ変えて試してみて下さい。

最後に曜日の関数を変更します。これは単純に、日にちセルに日にちが表示されていれば曜日を表示、そうでなければブランク・・・と、IF 関数を使って設定します。29日の場合はセルB33に。

=IF(A33="","",WEEKDAY(A33))

このセルをコピーして30日と31日に貼り付ければおしまいです。

とりあえずこれで、西暦と月度を入力すると、曜日が自動変更され、月末の29~31日の処理も行えるようになりました。これだけでは物足りないとは思いますが、今日はこの辺で。

お疲れ様でした。

※もっと簡単に定義したい方へ
エクセルは万年カレンダーを持っています。1月31日に1を足せば必ず2月1日になります。閏年だろうと、間違えずに計算します。と言うことは、前日と当日の月を比べて違っていれば空欄にし、2月の場合、前日セルが空欄ならエラーになるので、その回避処理も追加しておけばOKです。月を取得するにはmonth関数、前日セルが空欄かどうかは、if関数で「=""」ならば、とするのが無難でしょう。

次回は、土曜日と日曜日の色替えです♪

曜日を調べる

エクセルで曜日を調べるには WEEKDAY 関数を利用します。

cal_081015_03.png

(1)fxボタンをクリック
(2)関数の分類で「日付/時刻」を選択
(3)リストから WEEKDAY 関数を選択

最後に、OKボタンをクリックすると WEEKDAY 関数の編集画面が開きます。

ところで、「シリアル値」ってなんのことでしょうか?!?!実は、Windows版エクセルでは1900年1月1日のシリアル値が「1」なんです。1900年1月2日が「2」・・・と言う具合に数字が日々大きくなっていきます。1900年から1000年以上経った今日のシリアル値を暗算で求めるなんて、それこそその分野の特殊な能力がないとできません。

というわけで、ちゃんと関数が準備されていますのでご安心を。二度手間で申し訳ないのですが、先ほどの WEEKDAY 関数の画面はいったんキャンセルいただき、以下の操作をお願いします。

(1)fxボタンをクリック
(2)関数の分類で「日付/時刻」を選択
(3)リストから DATE 関数を選択

OKボタンをクリックいただくと、DATE 関数の編集画面が開きます。ここに、今日の日付なり、1900年1月1日なりを入れてみて下さい。ちなみに2008年10月16日のシリアル値は「39737」だそうです(笑)。

ということで、DATE 関数を使って求めたシリアル値を、WEEKDAY 関数で使うわけですね。

では早速使ってみましょう。まず、西暦と月度を定義しましょう。とりあえず西暦がセルA1、月度がセルA2にしておきましょう。

cal_081015_04.png

続いて日付を DATE 関数を使って表示します。セルA5に

=DATE(A1,A2,1)

と入力してみて下さい。関数編集画面を開いてもかまいませんし、「=」から手入力してもOKです♪

えっ、5桁の数字が表れた?!?!

いえ、大丈夫です。それで正常です。安心して下さい。先ほど説明した「シリアル値」が表示されているだけなのです。え?それでもこれじゃぁカレンダーにならない?!あぁ、まぁそうですね。でも、そう言うときは、セルの書式設定というおまじないをすればいいのです。

シリアル値が表示されているセルを選択してから、キーボードの「Ctrl」を押しながら数字の「1(テンキーではなく「!(ぬ)のキーです」)」を押してみて下さい。「セルの書式設定」が開きましたよね?(エクセル2007ってどうなってるんだろう??)

cal_081015_05.png

セルの書式設定画面の「表示形式」タブを選び、分類の一覧から「ユーザー定義」を選び、種類の入力スペースにある「G/標準」を削除して、「d」を入力します。すると「種類」の上に表示されている「サンプル」が5桁の数字から「1」に変わるんです!!

この「d」は、Year,Month,Date のDateの「d」なんです。シリアル値から、y(年)、m(月)、d(日)が簡単に抜き出せるというわけです。ちなみに・・・「d」を「dd」とすると、「01」です。「10/1」ではなく「10/01」と表示したいときは、「mm/dd」とすればすっきりします♪

えっと、話がそれましたが、書式設定のおまじないで、無事、日にちが「1」になったかと思います。なんか面倒な気もしますが、WEEKDAY 関数で利用するため、2日以降も関数を設定します。でも、わざわざ、date 関数を使う必要はありません。シリアル値に1を足せば、必ず次の日になるんですから♪

と言うわけで、セルA6に、

=A5+1

と入力するだけでOK。シリアル値になってしまったら、セルの書式設定でおまじない。

「2」になったのを確認したら、このセルの右下の小さな四角(■)を掴んで31日のセルまでドラッグ!順々に「前のセル+1」がコピーされます。

日にち欄に「1」~「31」までの数字が入っていればとりあえず日付は完成です。

さて、ようやく曜日です。

セルB5に WEEKDAY 関数を入力します。

=WEEKDAY(A5)

あー、まただまされたー!とか思っていませんか?だって、数字が表示されているはずですから。でもこれで良いんです。

cal_081015_06.png

曜日のセルを選んで、セルの書式設定画面を開きます。先ほどは「日にち」のみを取り出しましたが、今度は日本語で曜日を表示するようにします。「aaa」で「月火水木金土日」、「aaaa」なら「月曜日火曜日水曜日・・・」となります。また英語の方がイイ場合は「ddd」や「dddd」でどうぞ♪

最後にセルA5を選択し、右下の小さな四角を掴んで31日までドラッグします。これで月末まで曜日が入力されたはずです。

では、西暦と月度を変更して、曜日が自動変更されるか見てみましょう♪

う・・・できない???うーん(困)。とりあえず、手順を確認してみて下さい(汗)。

(3)に続きます。

エクセルカレンダーを自作したい!

そう言ったご要望が多いので、とりあえず解説していきます。ただし、

cal_081015.gif

こう言うのは、いわゆる応用編なので、考え方など、順を追っていきますね。手っ取り早く作りたい方は、エクセルの雛形などをDLしてご利用下さい♪

何よりもできてもらわないと困るのは、エクセル上で文字の入力ができることと、罫線が引けること、そして、文字のサイズを変えたりフォントの種類を変更できることです。これらに関しては説明しませんので、お手持ちの参考書でご確認下さい。

まずは以下のようなシンプルなカレンダーを作ってみます。

cal_081015_02.gif

数字も曜日も手入力ですので、どなたでも作成できると思います。

でも、これでは不満なんですよね(苦笑)。

  1. 曜日を手帳やカレンダーで調べて入力するのが面倒
  2. 30日だったり31日だったり、28日だったり29日だったり、書いたり消したりも面倒
  3. できたら土曜日は青、日曜日は赤で表示できたら良いのになぁ~
  4. 贅沢を言って祝祭日振替え休日もわかるようにしたい!

私はこんな不満を感じますが、皆さんはどうでしょうか???

とりあえずですね、3と4は手数が多くちょっと面倒かも知れませんが、1と2は比較的わかりやすいのでやってみましょう!!!

では、次のページで早速♪

このアーカイブについて

このページには、2008年10月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年9月です。

次のアーカイブは2009年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 5.04