シフト表で日ごとの出勤人数を数える方法(COUNTIFと人数不足の判定)【LibreOfficeで計算して確認】
シフト表を作ったあと、「この日は何人出勤だっけ?」と目で数えていないでしょうか。この記事では、日ごとの出勤人数をCOUNTIFで自動で数え、最低人数を下回る日に「不足」と表示する式を、実際に計算して確かめた結果だけで紹介します。
出典: 筆者がLibreOfficeで計算して確認(検証スクリプト: site/verify/shift_headcount.py)。外部サイトの説明は参照していません。Excelでは未確認です。使うのは基本的な関数だけですが、本番の表に使う前に、数日分で結果を確かめてください。
先に結論
- 縦に人(5人)、横に日(7日)を並べ、セルに「出」「休」「早」「遅」などの記号を入れます。
- 出勤人数は、その日の列に対して
=COUNTIF(B2:B6,"出")です。 - 最低人数(ここでは3人)を下回る日は
=IF(B8<3,"不足","")で目印を出せます。 - 記号の表記ゆれ(「出 」のように末尾にスペースがある)は数えられません。 入力規則で選ぶ形にするのが安全です。
表の作り方
B2:H6に5人分の7日間を入れます(2行目〜6行目が人、B列〜H列が日)。たとえば次の表です。
| 1日 | 2日 | 3日 | 4日 | 5日 | 6日 | 7日 | |
|---|---|---|---|---|---|---|---|
| Aさん | 出 | 出 | 休 | 出 | 早 | 遅 | 休 |
| Bさん | 出 | 休 | 出 | 出 | 遅 | 休 | 休 |
| Cさん | 休 | 出 | 出 | (空欄) | 早 | 出 | 出 |
| Dさん | 出 | 出 | 出 | 出 | 出 | 休 | 休 |
| Eさん | 休 | 休 | 出 | 出 | 遅 | 遅 | 出 |
その下の行に、日ごとの式を入れます。B列の例です(C列以降は右へコピー)。
B8: =COUNTIF(B2:B6,"出")
B9: =COUNTIFS(B2:B6,"早")+COUNTIFS(B2:B6,"遅")
B10: =IF(B8<3,"不足","")
B11: =COUNTA(B2:B6)
B8は「出」の人数、B9は早番と遅番の合計、B10は「出」が3人未満なら「不足」、B11は何かが入力されているセルの数(入力漏れの確認用)です。
実際に計算した結果
上の表を計算した結果です。
| 日 | 出 | 早+遅 | 判定 | 入力数 |
|---|---|---|---|---|
| 1日 | 3 | 0 | 5 | |
| 2日 | 3 | 0 | 5 | |
| 3日 | 4 | 0 | 5 | |
| 4日 | 4 | 0 | 4 | |
| 5日 | 1 | 4 | 不足 | 5 |
| 6日 | 1 | 2 | 不足 | 5 |
| 7日 | 2 | 0 | 不足 | 5 |
7日×4項目の28件すべて、期待値と一致しました。注目点は2つあります。
- 5日目は「出」が1人だけで「不足」と出ますが、早番・遅番の4人が働いています。 「出」だけを数える式では、記号を分けたシフトの人数が漏れます。早番・遅番も出勤に含めたいときは、B9のように足し合わせた式にして、判定もその合計を使う形にしてください(判定を
=IF(B8+B9<3,"不足","")に変えるだけです)。 - 4日目はCさんが空欄でした。空欄は数えられず、入力数が4になります。入力漏れは「入力数」で気づけます。
表記ゆれで数え漏れる例
人数が合わない原因の多くは、記号の表記ゆれです。次の3人×7日の表で確かめました。
| 1日 | 2日 | 3日 | 4日 | 5日 | 6日 | 7日 | |
|---|---|---|---|---|---|---|---|
| Aさん | 出 | 出(末尾にスペース) | 出 | (空欄) | 休 | 出 | 出 |
| Bさん | 出 | 出 | 出 | 出 | 出 | 出 | 出 |
| Cさん | 休 | 休 | 休 | 休 | 休 | 休 | 休 |
2日目の「出」は、Aさんが「出 」(末尾に半角スペース)、Bさんが「出」です。この日のCOUNTIFの結果は 1 でした。見た目は2人出勤でも、末尾にスペースのあるセルは「出」と一致せず、数えられません。入力数(COUNTA)は3のままなので、「入力数は合うのに出勤人数が少ない」ときは、表記ゆれを疑ってください。
対策は、記号を入力規則のリストから選ぶ形にして、手で打たないことです(入力規則の設定自体は、この記事では検証していません)。
注意点: この式ができないこと
- 労働時間の合計、法定の休憩や残業の判定はしません。人数を数えるだけです。
- 最低人数が曜日や時間帯で違う場合は、この記事の式では扱いません(最低人数を固定の3人にしています)。
- 休暇の申請や、誰を入れるべきかの提案はしません。
シフト表のひな形が必要なら
この記事の式は、自分で作った表にそのまま使えます。日付と曜日が自動で入るひな形を探しているなら、運営者が作った月間シフト表(Excelテンプレート・500円)があります。A4横1枚で印刷でき、15人まで入ります。日ごとの出勤人数を出す行は入っていますが、この記事の「不足」を知らせる判定は入っていません(自分で足す形になります)。Excelの確認はWindowsデスクトップ版16のみです。この記事の方法で足りる場合は、買う必要はありません。
勤務時間を計算したいときは、無料の勤務時間の計算ツールも使えます(入力は外部に送信されません)。
まとめ
- 出勤人数は
=COUNTIF(その日の列,"出") - 記号が複数あるときは COUNTIFS を足し合わせる
- 最低人数の判定は
=IF(人数<最低人数,"不足","") - 末尾スペースなどの表記ゆれは数えられないため、入力は選択式にする
- 式はいずれもLibreOfficeで計算した結果。Excelでは未確認のため、本番の表に使う前に数日分で確かめる
参考にした情報
- 出典: 筆者がLibreOfficeで計算して確認(検証スクリプト: site/verify/shift_headcount.py)