富田パソコンサークル (Tomita PC Circle)

京都の京丹波町富田の「公民館」をホームに活動するパソコンサークルのブログ。

「エクセルで万年カレンダー」の続き:(その2)

2009年05月05日 | エクセル

さてここからが、いよいよあの「関数」って言うんが登場してくる本番です
その前に、二つの関数の説明をしておきます。
DATE(デート)とWEEKDAY(ウィークデイ)の二つです
DATEというのは、その日の日付のデータを求める関数で、下図のように
別々のセルに年,月,日が入力されている場合(次のような図の場合は・・・)

K2というセルに西暦、L2というセルに「月」、M2には「日」が区分けして入っているときに
その右隣のN2というセルに
DATE([年]K2,[月]L2,[日]M2) と言う具合にそれぞれをカンマで区切って入力すれば
その日付としてのデータが得られます。
これに対してWEEKDAYという関数は、日付のデータが入っているセルを指定したり、日付データそのものを引数にしたりすると
特定しなければ日曜日を「1」として土曜日を「7」とする曜日を数値化した
数字が得られます・・・・んなことして・・・ナンになるってお思いでしょうが
これが結構、曜日の判別するときに役に立ちます
従って次の図のような場合、さっきのN2というセルのさらに
右隣のO2というセルに、もっちゃりしたやり方やけど
WEEKDAYDATE(A1,B1,1)と入力すると




そこには、金曜日を示す「6」という数字になって表れます

・・・さて、こんだけでもしんどい話ですが、ココまで来たら
この二つの関数を使っていよいよ問題のその月の第1週の始まりである
第1日曜日の日は「何月何日」であるかの「数式」を「A3」というセルに
書き込みます。

それは、結論から言うと

DATE(A1,B1,1-WEEKDAY(DATE(A1,B1,1))+1




となります。青い字で書き込んだのがその月の初めの「1日」を示す訳ですから
上の式を文章に訳すると
=(イコール)その年のその月の1日引く曜日を数字で表す(その年のその月の1日)に
1を足す
上の式ををそのままコーピーしてエクセルのシートに貼ってもかまいませんが
とにかくA3に入力してしまいますと







※設定によっては表示が少し違ってるかも知れませんよ

あっそうや・・・先々の事考えたらここらで、日曜日や土曜日の列に
やら青の色つけしといた方がええと思いますわ


ということになるんですが・・・・わかってもらえますか・・・
最後に「1」だけ足すのが「ミソ」で
それは、図の例で言うと「月初めの5月1日」が、この式で求められた曜日の数「6」
ではあるんですが、図を見てもわかるようにカレンダーで言うと
「5日前」つまり「6」より一つ少ない5」だけ前にさかのぼらんとあかんので
後に調整の意味でチョボット「1」だけ足してあるんです・・・・




で、上のような事で年、月を表すセルの「値」を変えるだけで曜日に
対応した「万年カレンダー」の骨組みが出来上がったんですが、ご覧のように
数字も、それに余分な日付も入ってて、ナンとかせなあきません
ただし、大事なことはナンとかせなあかん言うて、要らんとこ削除してしもたり
書き換えたりすると努力がぱぁーになってしまうんで
仕上げとして、工夫を凝らします。




まず日付ですけども、カレンダーに年月は不要で「日」だけが必要です
これはまず日付の枠であるA3からG8のセルを ドラッグして範囲指定しておき
エクセルのメニュー→「書式」→「セル」→「表示」のタブを開きます
下図のように左の「分類」欄の一番下の「ユーザ定義」を選び
右側の「種類欄」の入力欄に「d」とだけ小文字で入力します。
エクセルでdは「日」を年は「」、月は「m」を意味しています。







これで見た目はカレンダーらしくなりましたが、余分な日付が
まだ残っています。これを自動的に処理するには今度は
条件付き書式」とMONTH(マンス)という「月」を表す関数に
登場してもらわなあきません
MONTH(マンス)という関数を使う例を式で説明すると
=MONTH(A3)<>$B$1
・・・※B1のセル位置をそれぞれ行列の
頭に「$(ドルマーク)」をつけると絶対参照とゆうて、
何が何でも[月]を表すB1のセルだけという指定になります
関数は半角で入力して下さいよ

この式を解説すれば、A3というセルの値の月が
月を表してるB1のセルの値(絶対にココ)と同じではなくそれよりも大きく、さらに小さい場合は・・・
ということを意味しています。

条件付き書式というのは、ある条件になったときに、そのセルの表示に
色とか塗りつぶしなどの加工が加えられて、わかりやすく強調できる書式を言います。

では、早速挑戦してみることにしましょう
さっきと同じで、A3からG8までをドラッグして範囲指定しときます
エクセルのメニューバーの「書式」→「条件付き書式」を選択します








すると上のようなダイヤログが現れて来ますので
図のように1~3の番号で示した順に左のリストからは「数式が」を選び
その横の数式欄には、さっきの数式
=MONTH(A3)この場合は絶対参照にはしない)<>$B$1
を半角入力します・・・そして最後に(3)で示す「書式」ボタンを押します。




すると、セルの値が上の条件と一致した場合だけの「書式」を聞いてくる
下図のようなダイヤログが現れますので





今回は、図の色を選択するところの欄の「▼」のリストから
薄いグレーを選んでおくことにします。
もちろんこの時に「白」を選択すると下地と相まって見えなくすることも可能です
あとは色選択のダイヤログの「OK]を押して
さらに「条件付き書式」のダイヤログも「OK」を押すと




できあがりです・・・・あぁしんど・・・・って事になりますが
これを保存しておいて、必要なときに呼び出して
この部分全体をコピーして貼り付けると
エクセルのシートのどんなところにも数式が崩れずに貼り付くはずです
(ただし、最後の条件付き書式でいう$B$1という部分だけは
その都度、「月」の値のあるセルの番地に変える必要があると思います。)
ここまで来て終わりです
出来具合は、月の数字や、年の数字を変えて試してみて下さい

その上で、「右クリック」で行や列の幅を変えたり、挿入を加えて
自分なりに加工や編集をして「見栄え」を良くして下さい




ココまで・・・お疲れさんでした・・・チャンチャン




※小りんちゃんの指摘で大きなミスを発見しました
「条件付き書式」の説明の図と記事の数式が食い違ってます・・・・
ごめんなさい絶対参照すべきセル位置は「$B$2」ではなく
$B$1」が「月」を示すセル位置ですので
条件付き書式の数式の末尾を当初の「$B$2」から「$B$1」に変えて下さい
式そのものは「=MONTH(A3)<>
$B$1」となります
ちなみに記事の中身はこそっと変えておきました


最新の画像もっと見る

3 コメント

コメント日が  古い順  |   新しい順
カレンダー (小りん)
2009-05-08 11:38:07
いつもありがとうございます。最後の最後で行き詰まっています、条件付書式で余った数字に色をつけようとするのですが、全部の数字に色がついてしまいます、なんでかなー
返信する
申し訳ない (tom)
2009-05-08 17:17:12
小りんちゃんの指摘で
記事の間違いに気づきました
大変申し訳ない・・・「条件付き書式」
で入力すべき式の最後の
絶対参照位置のセルの番地を
「$B$1」に訂正すると
うまくいくと思います

それにしてもこれに挑戦された
小りんちゃんに感動してまっせ
返信する
お気づきの方も (tom)
2009-05-08 20:53:01
おられるとは思いますが
小りんちゃんの指摘を受けて
記事の後半部書き直してまんにいゃわ
大変失礼しましたし
混乱させたことお詫び申し上げます
返信する

コメントを投稿