Excelで時数管理①~年間の予定を埋める

学校関係の方も生徒さんでいらっしゃるんですが、学校事務も大変ですね。いろいろ聞かされるんですが、学校関係シリーズとして今回は、時数管理を取り上げてみたいと思います。(まったく関係のない方、すいません。)

時数管理とは、国語や算数といった教科を年間を通じて何時間行ったかを管理することです。しかもただ管理するだけでなく、国からお達しある(おそらく文科省)教科ごとの標準時数をクリアしなければならない。

ただやみくもに管理すればいいというわけではないんです。

ネットで「時数」で検索すると結構たくさん抽出されます。フリーソフトなんかも結構な種類ありましたね。ただ、私の生徒さん(小学校)は、自分で作りたいということで、勉強もかねて作成してみました。

お話によると、まず年間で1時間目や2時間目が何時間あるのかを求めたいということでした。そこでだいたいの概算時間割を作り見通しを立てるということです。

作業としては、時数に関係のない休日、クラブ、運動会などの予定を入力し、それ以外の日数を計算すればいいわけです。

ということで、このような表を作成しました。
※上部の教科ごと学期ごとの表は次回以降解説します。



4月1日から3月31日までの日付、曜日、それから、1時間目から7時間目まで枠を用意しました。「備考」にはなにか留意事項などを入力すればいいと思います。学期ごとの集計なども行うので、分かりやすく色分けしました。

日付や曜日は、オートフィル機能を使い簡単にコピーできます。


時間枠には入力規則を使って必要な項目を用意しました。※入力規則でのリスト作成は、「ピボットテーブルで在庫管理①~項目設定」を参考にしてください。

一か所に設定したらあとはコピーします。


このような項目を設定しました。「国,社,算,理,体,音,図,家,道,学,総,児,行,/,委,ク」

時数に関係あるのは国(国語)から総(総合)までです。

おそらく教務担当の先生から年間の予定表が配布されると思うので、児(児童会)、行(行事「運動会など」)、/(休日)、委(委員会)、ク(クラブ)で、まずは、時間を埋めていきます。

こんな感じで・・・・・。



その作業が終わると、埋めた時間以外の枠を時間割表に集計し、概算の年間時間割を作成します。

このような時間割りを作成しました。

※クリックすると大きく表示されます。


なにやらめんどくさそうな表になりました。

もう集計された数字が入っていますが、この表の解説は次回へ。

Excelで時数管理②~可能時数を集計する・・・・・へつづく

Excelで時数管理②~可能時数を集計する

Excelで時数管理①~年間の予定を埋める・・・・・からのつづき

前回は年間の可能時数を割り出し、概算の年間予定を立てるため、1年間の暦と時間枠を作成し、その日付ごとの時間枠に時数に関係のない予定(休日や行事)を埋める・・・・・・という作業を行いました。(ややこしくてわからない方は「Excelで時数管理①~年間の予定を埋める」を見てね)



こんな感じで埋めていく。



今回は、年間の可能時数を算出する作業を行います。

このような表を予定表の横に作成しました。



1週間の時間割りですね。日曜日も授業があることを考えてすべての曜日を含んだ表にしました。

作成する場合は、まず、月曜日の1時間目の枠から作成しましょう。



3つに分かれているのは、1学期~3学期を表します。その上に全学期の集計が表示されるようにしています。

それでは、1学期の月曜日、1時間目の可能時数を集計する数式を作成します。




集計というよりはカウントと言ったほうがいいのかもしれないですね。

カウントというとCOUNT関数がありますが、COUNTIF関数は、2つ以上の範囲の複数条件を満たすカウントはできないので、当ブログで扱ってなかったのですがSUMPRODUCTという関数を使います。

SUMPRODUCT関数は配列内の対応する要素間の積を計算し、それらの値の合計を求める関数ということで、ほとんどわけがわからないですが、今回はこの関数を説明とは別な使い方をします。

引数はこのようになります。

SUMPRODUCT(配列1,配列2,配列3,..)

この「配列」に範囲指定するとその積を計算し、うんぬん・・・ということなのですが、ここに条件式を入れると、条件を満たしたとき「1」を返し、満たさないときは「0」という値を返してくれるという別な顔も持っています。これを利用し、複数条件を満たすカウントをしようということです。

例えばこんな使い方をします。

=SUMPRODUCT((A1:A10="国語")*(B1:B10<=70))

A列には「教科」、B列には点数が入力されてるものとします。

A1が国語の場合、条件を満たしているので「1」になります。そしてB1が70以下の場合、これまた条件を満たしているので「1」になります。

引数の内容を見るとこの条件どうしを掛け算(*)していますね。したがって条件を満たしたものどうしだと・・・「1×1」、つまり答は「1」になります。

一方が条件を満たさないと値として「0」が返されますから、「1×0」で、答は「0」になります。つまり条件をすべて満たす場合のみ、「1」という答になるのです。

これを指定された範囲分繰りかえして集計してくれます。指定された範囲に「国語」で「70以下」のデータがいくつ存在するかカウントすることができます。

このSUMPRODUCT関数の特性を活かし、時間割表の月曜日、1時間目、1学期の可能時数をカウントする式を作成しましょう。

可能時数は、年間を通して、授業が何時間行えるかを学期が始まる前に算出し、概算の見通しを立てるため使います。したがって、年度初めに配布される時数に関係のない「/」(休日)や「ク」(クラブ)などの予定を表に入力し、その予定以外のセルをカウントすることになります。



基本的には図の赤く囲った部分、つまり空白をカウントします。ただ、気をつけるのは、予定表には、のちのち実際に行った教科の情報も入力する予定なので(次回以降説明します。)、「国」や「算」といった時数に関係のある値が入力されたセルもカウントするように数式を作成します。

月曜日、1時間目の1学期のセルを選択します。



条件は、予定表の曜日が「月」で、時数に関係のない「児,行,/,委,ク」が入力されたセル以外をカウントするということになりますのでこのような数式になります。

=SUMPRODUCT(($B$9:$B$130=P$8)*($C$9:$C$130<>"/")*($C$9:$C$130<>"行")*($C$9:$C$130<>"児")*($C$9:$C$130<>"ク")*($C$9:$C$130<>"委"))

長ーい数式になりました。(選択範囲は絶対参照にしましょう。)

条件一つ目の「B9」から「B130」は予定表の曜日列の1学期の範囲です。



そこに入力された値で「P8」(時間割の曜日のセル)と同じ値、つまり「月」ならば条件一致で値「1」が返されます。


条件二つ目の「C9」から「C130」は予定表の1時間目で1学期の範囲です。



「<>」は(比較演算子で「以外」という意味)そこに入力された値で「/」以外の値であれば条件一致で「1が返されます。

それ以降の数式はそれぞれ「行」「児」「ク」「委」以外であれば条件一致で「1」が返されることになります。

このすべての条件6個が一致すれば、「1×1×1×1×1×1」という計算になるので、「1」という値が返ります。

一つでも満たさないと、「0」が計算に入ってくるので、他の条件を満たしても「0」という結果になります。

このひとつひとつの計算を指定した範囲分繰り返し合計してくれます。すべて条件を満たした「1」という答えが何個あるかということです。

同様に2学期、3学期も設定しましょう。1学期をコピーして範囲をそれぞれ変更しましょう。



2学期は・・・・・・
=SUMPRODUCT(($B$131:$B$283=P$8)*($C$131:$C$283<>"/")*($C$131:$C$283<>"行")*($C$131:$C$283<>"児")*($C$131:$C$283<>"ク")*($C$131:$C$283<>"委"))



3学期は・・・・・・
=SUMPRODUCT(($B$284:$B$373=P$8)*($C$284:$C$373<>"/")*($C$284:$C$373<>"行")*($C$284:$C$373<>"児")*($C$284:$C$373<>"ク")*($C$284:$C$373<>"委"))・・・・・こんな感じに範囲を変更します。

まだ予定表が入力されていなければ、選択範囲のすべての月曜日がカウントされるはずです。なぜなら、月曜日で「/」「行」「児」「ク」「委」以外だからです。確認の意味で数えてみるのもいいでしょう。

3学期まで設定が終わったら、上のセルに1~3学期の合計の数式を入れておくといいですね。




そして、1時間目を7時間目までコピーします。



ここからはまた地道に条件の範囲を修正していきます。


1学期の2時間目なので、曜日の条件はそのままで、それ以降の範囲が変更されます。図の例では2時間目はD列になってます。



2時間目、1学期は・・・・・
=SUMPRODUCT(($B$9:$B$130=P$8)*($D$9:$D$130<>"/")*($D$9:$D$130<>"行")*($D$9:$D$130<>"児")*($D$9:$D$130<>"ク")*($D$9:$D$130<>"委"))・・・・・と、こんな感じになります。

3時間目以降も条件式の列名の変更をしていきます。

7時間目まで修正したら、あとは、日曜日までコピーします。



ふー。地道な作業ですね。でも、毎回この作業を行うわけではありません。これが完成すれば未来永劫使えるかもしれないですから。(言い過ぎか(笑)。)

まだ、予定表が空白ならば、どの時間も1週間の合計が365になるはずです。

それでは予定表に入力してテストしてみましょう。画面の関係上、月曜日の1時間目から3時間目の1学期の範囲にデータを入力してみます。

4月6日の1時間目に「国」(国語)2時間目に「/」(休み)3時間目は「ク」(クラブ)を入力しました。

図の左が入力前、図の右が入力後。



「国」が入力された1時間目は変化がありません。そして時数に関係のない「/」と「ク」が入力された2時間目、3時間目は時数が減っています。

ただしく、数式が設定されました。

これで年間の予定を入力し終えた時、この時間割には年間の可能時数だけ残るというわけです。次回まで適当に予定を入力してみます。

さて、これでこの時間割が完成したわけではありません。次回は、時間割りを完成させて、概算の時数を入力してみます。

Excelで時数管理③~概算時数時間割表を完成させる・・・・・へつづく

Excelで時数管理③~概算時数時間割表を完成させる

Excelで時数管理②~可能時数を集計する・・・・・・からのつづき

地道な作業の結果、予定表から年間の可能時数を算出してくれる、時間割りを作成しました。

ということで、生徒さんの実際の予定を予定表に入力してみました。(多少間違って入力したかも・・・ご了承ください)



2学期は夏休み、3学期は冬休みがあるので休日「/」が多いですね。

結果、このような可能時数時間割表(なんか違う言い方ないでしょうか)ができました。

※クリックすると大きく表示されます。


7時間目がない学校なので、7時間目はすべて「0」になってます。

曜日ごと、時間ごと、さらに1学期から3学期までが分割されて表示されてます。

ここからは、概算の時数を入力する作業に入ります。

月曜日、1時間目の枠に注目すると、時数の下に3行の枠が用意されています。



これは、学期ごとに時間割を変更することを考慮して作りました。

ここに実際に行う教科名と時数を入力します。

2列目の枠に予定表同様に入力規則を使い、教科を選択できるように設定します。(3行すべてに設定します。)すべての曜日及び時間にもコピーしましょう。



使い方としてはこのように、教科とその右に行う予定時数を1~3学期の可能時数を超えない範囲で入力します。



時間割の上部には、指定した教科の時数を集計する表を作成しています。



1行目はお上からお達しがある標準時数をそれぞれの教科ごとに入力しておきます。

2行目には、時間割りに指定した教科の時数を集計します。

3行目は、標準時数と指定した時数との差(標準時数―概算時数)を表示するようにしました。この差を見ながら、概算時数を調整します。

それでは2行目に集計の関数を作成しましょう。



使う関数は、当ブログでも解説した、SUMIF関数を使います(使える関数~SUMIFとCOUNTIFを参照してください)。

SUMIF関数の引数は次の通りです。

SUMIF(①条件の対象範囲,②条件,③集計する範囲)

①条件の対象範囲(教科を入力する枠)と③集計する範囲(時数を入力する枠)は図のように1週間分で7つあります。



ですので、SUMIF関数を7つ(月~日)作成し、それをSUM関数で合計する方法をとります。

国語の概算時数にセルを選択します。

まず一つ目のSUMIFを作成します。



=SUM(SUMIF($Q$10:$Q$43,"国",$R$10:$R$43)
※時間割を作る位置によって範囲は違います。

まずSUM関数を使います。そしてその中に一つ目のSUMIF関数を作成していきます。

「Q10」から「Q43」の間で入力された値が「国」のセルの時数(「R10」から「R43」)を集計する・・・・という意味になります。

これを「,」(カンマ)で区切りほかの範囲のSUMIFも作成します(範囲の絶対参照は忘れずに)。

こんな感じになります。



画面には入りきりません。

=SUM(SUMIF($Q$10:$Q$43,"国",$R$10:$R$43),SUMIF($T$10:$T$43,"国",$U$10:$U$43),SUMIF($W$10:$W$43,"国",$X$10:$X$43),SUMIF($Z$10:$Z$43,"国",$AA$10:$AA$43),SUMIF($AC$10:$AC$43,"国",$AD$10:$AD$43),SUMIF($AF$10:$AF$43,"国",$AG$10:$AG$43),SUMIF($AI$10:$AI$43,"国",$AJ$10:$AJ$43))

長いですね。でもこれしきでへこたれてはいけません。

これで、7つの範囲で条件、「国」の時数のみ集計することができます。

できたら他の教科へコピーし、条件の教科名のみ修正して終了です。

では実際に入力してみます。

こんな感じに入力した教科を集計してくれます。



あとは、標準時数とその差をにらめっこしながら、概算の時間割りを作成します。


次回は毎日の時数管理を入力する設定を予定表に行います。

Excelで時数管理④~年間予定及び時数入力表を完成させる・・・・・へつづく

Excelで時数管理④~年間予定及び時数入力表を完成させる

Excelで時数管理③~概算時数時間割表を完成させる・・・・・からのつづき

前回、可能時数から概算の時間割表を作成するところまで完成させました。

※算出された可能時数と標準時数を確認しながら概算の時間割を作っていく。


この時間割が完成すれば、もうこわいものはありません。

この時間割のとおり進めていけば、標準時数をクリアできるはずですから・・・・・とはいうものの、概算は概算、予定は予定といことで、なかなか順調にはいかないのが世の常でして、予定が変更になったり、うっかり、入力ミスしたりなどいろんなことがあります。

やはり毎日のチェックが必要と思います。

そこで、「Excelで時数管理①~年間の予定を埋める」で作成した、年間予定に、毎日行った授業を入力していくことで、さらに時数の管理を強固なものにしましょう。

年間予定表の上に標準時数と1学期から3学期までの時数に関係のある教科の集計表を作成しました。一番下の行には、標準時数との差を計算するようにしています。さらに「年間予定及び時数入力表」というタイトルまで付けています。



このように本日行った授業を入力すると、上部の表に集計されるように作成します。



関数は、COUNTIF関数(使える関数~SUMIFとCOUNTIF①を参照)を使います。

入力された教科をカウントするという単純明快な作業いなります。

COUNTIF関数の引数を確認します。

COUNTIF(①カウントする範囲,②カウントする条件)

1学期から3学期まで行を分けているので、①カウントする範囲は図のようにそれぞれ違いますので、注意しましょう。



1学期から3学期までの「国語」に設定できたら、コピーして、②カウントする条件を各教科に変更しましょう。

一番下の「残」には標準時数から1学期から3学期までの集計を差し引く数式を入力しておきましょう。


このように、その日行った教科を入力すると集計してくれます。




私の生徒さんは実際にこれを使って時数計算してます。まわりの先生方は時数計算をけっこう苦労してるらしいです。最後は面倒になって「もう適当だ!」なんて方もいるそうです。

このように、いったん年間の予定を決めて、概算の時間割を作成することにより、見通しが立ちますよね。気持が楽になります。

あとは、時間割に従って、毎日簡単な入力をしていけばいいだけです。

予定を変更すれば、時間割表の可能時数が増えたり減ったりしますので、そこを見ながら微調整していくことも必要になりますね。

少しでも時数計算を自分でやろうとしてる方の参考になったらと思います。


ちょっとした便利ネタだと早い更新ができるのですが、けっこうな大ネタなので解説や図の見せ方などを考るのに時間がかかってしまいます。ご了承ください。

この時数管理の表を作成するのにも、お話を聞きながら、けっこう時間がかかりました。

出来上がりのソフトを使うのもいいですが、こうやって自分で作成するとやっぱり達成感があります。また、自分でレイアウトの変更や追加など思いのままです。

当ブログはとにかく「自分で作ってみる」をモットーとしております。なるべくプログラミング言語などの専門知識がなくても実践で十分通用することが表現できればいいなあと日々考えております。

過去ログにもけっこう実践で使えるテクニックを紹介してます。よろしければぜひ見てくださいね。