エクセルで7連続勤務を禁止にする

posted in: Windows, エクセル, ブログ | 0

最近、エクセルでシフト表を作成している方より7連続勤務を禁止、またはすぐに気づけるようにする方法はないかと相談があり作ってみました。

検索しても、なかなか思った通りのものが見つからず作るのに手間がかかったので紹介します。

今回使用するエクセルは下よりダウンロードできます。

7連続勤務サンプル

 

目次

1、エクセルの形式と課題

2、数値に置き換える

3、連続する最高の値を表示

4、連続する最高の値の最高値を表示する

 

1、エクセルの形式と課題

まずは今回使用するエクセルの形式と課題についてです。

簡単なシフト表もどきですが・・・

列に日付、10日まで

行に人名、3名です

勤務は早番、平常、遅番と休みがあることにします。(複数種類の勤務がある場合にも対応します)

わかりやすいように休みを赤にしています。

スクリーンショット 2015-06-21 20.50.13

 

初めは、7日の中で休みがあるかをカウントすればできると思いました。

しかし、Aさんのように1日と10日に休みがあると7日区切りで休みをカウントしても意味がないことがわかります。しかも、シフト表は一月分なので31日です。

 

そのため、今回は別シートで早、平、遅、休みを数値(1と0)に置き換えます。置き換えた数値で1日から10日までで連続する1の最高値を求めます。求めた最高値が7以上かで条件付き書式または入力規則で判定を出すという形式にしたいと思います。

 

2、数値に置き換える

まずは、新しいシート(置き換え)を作成して同じような勤務表をコピーアンドペーストします。勤務については削除します。スクリーンショット-2015-06-21-21.01.39

その後は、休みの日を0としてそれ以外を1とするIFとCOUNTIFを使った式を入れます。シフト表シートを基準に入れます。

=IF(COUNTIF(シフト表!C3,”休み”),0,1)

こうすることで、休みの日は0それ以外の出勤日は1となります。ここでのポイントは休みを0にすることです。出勤日はいろいろな種類がありますが、休みの種類は少ないのでカウントがしやすいです。

休み以外にも必要な場合は例えば有給などの場合は

=IF(COUNTIF(シフト表!C3,”休み”)+COUNTIF(シフト表!C3,”有給”),0,1)

と+ で入れてください。

数値に置き換えオートフィルで全体に反映するとこのようになります。

スクリーンショット 2015-06-21 21.14.28

 

3、連続する最高値を求める

1が連続する最高値を求めます。今回は11日に当たる列で求めます。

Aさんの場合は3列目なので

=MAX(FREQUENCY(COLUMN(C3:L3),(C3:L3<>1)*COLUMN(C3:L3))-1)

と打ち込みます。そうすると8と表示されるはずです。

B、Cさんはオートフィルで連続する最高の値が出ます。

スクリーンショット 2015-06-21 21.29.22

 

4、連続する最高値の最高値をシフト表に表示する

このままでも使えますが、別シート(置き換え)をいちいちみないといけないのでシフト表のシートで連続する最高値の最高値を出しましょう。

シフト表のC1に一番大きい値をMAX関数で求めます。

=MAX(置き換え!M3:M5)

スクリーンショット 2015-06-21 21.33.17

こうすることで勤務表を作成しながら連続勤務数を一目で確認することができます。

もう少し、凝りたい場合は条件付き書式で7以上なら赤くする。入力規則で7以上になったら警告を出すなどの方法が考えられます。

最後にもう一度、今回使ったエクセルファイルを貼っておきます。

 

7連続勤務サンプル

 

 

Please Share!Share on FacebookTweet about this on TwitterShare on Google+