会議室の使用予定表を毎月その都度カレンダーを作っていて結構面倒なので何とかならんかと課題を受けました。もっと簡単な方法があるかもしれませんが、ふだん馴染みの薄い Excel の関数でできたので参考のため紹介します。
図1.
年月を入力すると自動的に出来上がります。b3、c3 セルおよび b10、c10 セルは視覚的には不要です。セル単位の非表示はできないのでフォントを白にすればよいかと思います。祝日の設定は至難ですので別途に手動で追加します。
それぞれのセル内容の関数については複雑なので省略しますが、キーポイントは 『 =weekday("2013/3/1") 』 は 指定した日の曜日を返す( この日付は 金曜日、日曜から数えて 6 日目なので 6 になる) こと、また、『 =weekday("2010/2/29") 』 は 存在しないので #VALUE! のエラーになりますが 『 =iserror(weekday("2010/2/29")) 』 は TRUE を返すことです。
予定表にする場合は図に見られる 24/31 のような記述が不要なので d9 セル ( =if(iserror(weekday($b$3&d8+7)), "",d8+7) ) を b9 〜 c9 セルにコピーします。結果的には b9 〜 h9 セルの内容が同じで簡潔です。予定を書き込む行は通常の行挿入すれば OK です。予定表作成参照
次の表をコピーして貼り付けて検討して下さい。貼り付け後のセル配置、色、罫線の書式は適宜別途設定します。。
sample の字 が a1 セルに入るようにします。(貼り付けのオプション)で 「貼り付け先の書式に合わせる」 にすれば字が小さくなりません。
sample | |||||||
2013 | 年 | 3 | 月 | ||||
=B2&"/"&D2&"/" | =WEEKDAY(B3&"1") | ||||||
日 | 月 | 火 | 水 | 木 | 金 | 土 | |
=IF(C3=1,1,"") | =IF(B5="",IF($C$3=2,1,""),B5+1) | =IF(C5="",IF($C$3=3,1,""),C5+1) | =IF(D5="",IF($C$3=4,1,""),D5+1) | =IF(E5="",IF($C$3=5,1,""),E5+1) | =IF(F5="",IF($C$3=6,1,""),F5+1) | =IF(G5="",1,G5+1) | |
=H5+1 | =B6+1 | =C6+1 | =D6+1 | =E6+1 | =F6+1 | =G6+1 | |
=B6+7 | =C6+7 | =D6+7 | =E6+7 | =F6+7 | =G6+7 | =H6+7 | |
=B7+7 | =C7+7 | =D7+7 | =E7+7 | =F7+7 | =G7+7 | =H7+7 | |
=IF(ISERROR(WEEKDAY($B$3&B8+7)), "",B8+7&IF(B10="","","/"&B10)) | =IF(ISERROR(WEEKDAY($B$3&C8+7)), "",C8+7&IF(C10="","","/"&C10)) | =IF(ISERROR(WEEKDAY($B$3&D8+7)), "",D8+7) | =IF(ISERROR(WEEKDAY($B$3&E8+7)), "",E8+7) | =IF(ISERROR(WEEKDAY($B$3&F8+7)), "",F8+7) | =IF(ISERROR(WEEKDAY($B$3&G8+7)), "",G8+7) | =IF(ISERROR(WEEKDAY($B$3&H8+7)), "",H8+7) | |
=IF(ISERROR(WEEKDAY($B$3&B8+14)), "",B8+14) | =IF(ISERROR(WEEKDAY($B$3&C8+14)), "",C8+14) | ||||||
図1.の表は作成し易くするため絶対参照( $B$3, C$5 など )を多用しています。絶対参照のままだと移動には差し支えありませんが、他の場所に複製するには支障がでます。Ctrl + H で図2.が表示されるので、検索する文字列を $、置換後の文字列は何も入力しないで 『 すべて置換(A) 』 にします。シート上に他のデータがある場合は図3.のように範囲を選択しておいて置換すればよいでしょう。
図2.
次のように選択して Ctrl + C でコピーして任意の場所に貼り付けが出来ます。
図3.
絶対参照のドルマーク ($) の置換がうまくいかないとの Webメールで質問がありました。ドルマーク ($) を含まない数式書式を次に再掲します。最初は sample の字 が a1 セルに入るようにしなければなりません。
sample | |||||||
2013 | 年 | 3 | 月 | ||||
=B2&"/"&D2&"/" | =WEEKDAY(B3&"1") | ||||||
日 | 月 | 火 | 水 | 木 | 金 | 土 | |
=IF(C3=1,1,"") | =IF(B5="",IF(C3=2,1,""),B5+1) | =IF(C5="",IF(C3=3,1,""),C5+1) | =IF(D5="",IF(C3=4,1,""),D5+1) | =IF(E5="",IF(C3=5,1,""),E5+1) | =IF(F5="",IF(C3=6,1,""),F5+1) | =IF(G5="",1,G5+1) | |
=H5+1 | =B6+1 | =C6+1 | =D6+1 | =E6+1 | =F6+1 | =G6+1 | |
=B6+7 | =C6+7 | =D6+7 | =E6+7 | =F6+7 | =G6+7 | =H6+7 | |
=B7+7 | =C7+7 | =D7+7 | =E7+7 | =F7+7 | =G7+7 | =H7+7 | |
=IF(ISERROR(WEEKDAY(B3&B8+7)), "",B8+7&IF(B10="","","/"&B10)) | =IF(ISERROR(WEEKDAY(B3&C8+7)), "",C8+7&IF(C10="","","/"&C10)) | =IF(ISERROR(WEEKDAY(B3&D8+7)), "",D8+7) | =IF(ISERROR(WEEKDAY(B3&E8+7)), "",E8+7) | =IF(ISERROR(WEEKDAY(B3&F8+7)), "",F8+7) | =IF(ISERROR(WEEKDAY(B3&G8+7)), "",G8+7) | =IF(ISERROR(WEEKDAY(B3&H8+7)), "",H8+7) | |
=IF(ISERROR(WEEKDAY(B3&B8+14)), "",B8+14) | =IF(ISERROR(WEEKDAY(B3&C8+14)), "",C8+14) | ||||||