2012年5月18日金曜日

クラウドで勤務計画表を作成する

クラウドの一翼を担うGoogleSpreadsheetのことを、私はGSpreadあるいは単にGSと呼んでいます。
文字で書くとやたら長い感じがするからです。
で、この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 件のコメント:

コメントを投稿