文字で書くとやたら長い感じがするからです。
で、このGSpreadで簡単な勤務表を作成してみましょう。
まずどのようなものを作るか、概要設計です。
(1)年月を入力欄に入力すると、表の日付と曜日が自動的に変化する。
日付の変化とは、2月・4月・6月・9月・11月は”小の月”ですので、それに合った表示をする。
(2)勤務記号はリスト表示で行う。
いちいち手書きで記号を入力するのではなく、リストボックスより選択する。
(3)土曜日は”青”、日曜日は”赤”に文字を自動的に変える。
(4)各集計ができるようにする。
ざっとこなものです。
「年月を入力欄に入力すると」とは、以下のようなイメージです。
↓
(画像をダブルクリックすると、拡大して表示されます。)
では、日付と曜日がどうすれば自動的に変わるのかやってみましょう。
この勤務表は30名分の計画が作成できるようになっています。その勤務表の下にもうひとつ表を作ります。これは日付と曜日を特定するための仕掛けです。
44行目はたんに数字を1~31まで配列します。最大31日あるからです。
45行目”=DATE($AM$2,$AO$2,C44)”は年月入力欄で入力した数値と44行目に配列した数値1~31で日付を作成するということです。ですから、セルC45には2012年8月1日が入ります。D45は2012年8月2日であり、E45は2012年8月3日・・・・・AG45は2012年8月31日となります。
<補足>
セルAM2に年に当たる数字2012が、セルAO2に月に当たる数字8が入力されています。
"$"が文字や数字の前に付くと固定化する役割があります。$AM$2をシート内でドラッグダウン・アップしても変化しません。
次にその下、46行目は45行目で作成した日付の月の部分でけを表示させます。
=MONTH(C45) がこれにあたります。
で、少し過去に遡りますが、2012年の2月分を作成しましょう。
↓
これを見て頂ければお分かりだと思いますが、2012年の2月30日及び2月31日は存在しなく、3月1日と3月2日になります。ここに最後の2日は2月ではないと識別できます。つまり。「小の月」を見分ける仕掛けになります。
47行目は最後3日だけのための仕掛けです。2月は殆ど28日で終わるからです。
=IF(AE46=$AO$2,1,0)とは、「もしセルAE46とセルAO2の値が等しいなら1を、そうでないなら0を入れなさい」というこです。
これを2月で見てみると、
最後の2日が"0(ゼロ)”になります。これを勤務表の日付と曜日欄に反映させます。
その前に曜日を表示させます。
=CHOOSE(WEEKDAY(F45)、"日"、"月"、"火"、"水"、"木"、"金"、"土")
45行目で設定した年月日をWEEKDAY関数で曜日の値に変換します。もしこの関数で返される値が1なら日曜日、2なら月曜日、・・・7なら土曜日となります。単に、WEEKDAY(F45)ですと"7"ということになります。しかし数字だけ返されても仕方ないので、CHOOSE関数でWEEKDAY関数の返数と配列数の同じものを選択します。ですから、今回の場合は7番目の配列の値を返すということになり、"土"が入ります。
=IF(AF47=1、CHOOSE(WEEKDAY(AF45)、"日"、"月"、"火"、"水"、"木"、"金"、"土")、"")
という長ったらしい文章は、噛み砕いていいますと、「最後の3日分は、47行目の値が1の時に曜日を表示させ、それ以外の時(つまり0:ゼロ)は表示しない」ということです。
(ж) このようにscriptプログラムを使わずとも、関数のみで曜日を表示することができます。
2012年2月は次の通りになります。
次に、勤務記号はリスト表示で行うというものですが、メニュー・バーより[データ]-[確認]をクリックします。
↓
これでドロップダウン・リストになりました。
土曜日は”青”、日曜日は”赤”に文字を自動的に変える方法は、条件付き書式で行います。
↓
選択したセルで、文字が”日”なら文字を赤くし、文字が”土”なら青くします。
各集計は、COUNTIF関数で行います。
最後にこのサンプルを、テンプレートギャラリーで公開しています。少しScriptでプログラム作りました(もちろん無料です!!)。
↓
尚、パターンの入力を使用される時は、選択セルを勤務表の勤務記号を使用範囲に入れてください。
名称は、work_table
( テンプレート・ギャラリー )
https://docs.google.com/templates?q=work_table&sort=hottest&view=public
(参考HP)
0 件のコメント:
コメントを投稿