Excelでシフト表を自動作成するには?集計と割当の違い
Excelでは、日付の生成や勤務コードの人数集計を数式で自動化できます。一方、「誰をどの日に入れるか」を希望休や必要人数に合わせて自動で決めるには、割当条件を扱う仕組みが別に必要です。ここでは3人・3日間の表を自分で作り、マクロなしで自動化できる範囲を確かめます。
編集:シフトエンジン。参照した公式資料と確認日は本文末尾に掲載しています。
「自動作成」の中身を三つに分ける
シフト表を自動作成したいとき、最初に「日付を毎月書き直したくない」「人数を数え直したくない」「スタッフを自動配置したい」のうち、どれを解消したいか決めます。見た目が同じExcelファイルでも、できることは大きく異なります。ダウンロード前に、説明の「自動」が指す処理を確認してください。
日付生成と集計は、入力された情報を決まった式で処理するものです。人数が足りないと分かっても、式が適切なスタッフを見つけて勤務欄へ書き込むわけではありません。次の表を使って、まずは自動集計付きの勤務表を作り、配置の判断は人が行う構成を試します。
| 自動化する部分 | 入力するもの | 得られる結果 |
|---|---|---|
| 日付・曜日 | 対象年月、開始日 | 表の見出し |
| 人数・時間の集計 | 人が入力した勤務予定 | 人数や合計時間 |
| スタッフの割当 | 希望、必要人数、資格、勤務条件 | 条件に沿う配置候補 |
3人・3日間で、入力欄と計算欄を作る
空のワークシートで、A1に「スタッフ」、B1に =DATE(2026,11,1) と入力し、B1の表示形式を m/d にします。C1に =B1+1、D1に =C1+1 と入れ、同じ日付表示にします。B1〜D1は11/1、11/2、11/3になります。DATEは年・月・日から日付を作る関数です。
A2〜A4にS01、S02、S03を入力します。B2〜D4は手で配置する欄とし、下表の勤務コードを入れてください。「早」は09:00〜14:00、「遅」は14:00〜19:00、「休」はこの例で勤務予定なしを示す記号です。年休などの労務区分を示す表ではありません。
A5を「早の人数」、A6を「必要な早の人数」、A7を「過不足」とします。B6〜D6にはすべて1を入力します。例は一日一つの早番枠を点検するだけで、開店から閉店までの全時間帯の充足を保証する設計ではありません。
| セル/スタッフ | B列:11/1 | C列:11/2 | D列:11/3 |
|---|---|---|---|
| A2:S01 | 早 | 休 | 遅 |
| A3:S02 | 遅 | 早 | 休 |
| A4:S03 | 休 | 遅 | 早 |
| A6:必要な早の人数 | 1 | 1 | 1 |
この節の参照資料:Microsoft Support「DATE 関数」
人数が変わることと、人が配置されることを確かめる
B5に =COUNTIF(B2:B4,"早") と入力し、D5まで右へコピーします。次にB7に =B5-B6 と入力し、D7までコピーします。最初は早の人数が各日1、過不足が各日0になります。COUNTIFは指定した範囲で条件に合うセルを数えます。
ここでC3の「早」を「休」に変えます。C5は0、C7は-1になり、11/2の早番が1人不足していることが見えます。しかし、C2やC4の内容は変わりません。この変化が、自動集計と自動割当の違いです。必要人数を増やした場合も、過不足の結果が変わるだけです。
不足を直すには、その日に勤務できる人と時間帯を確認してから入力を変えます。コード末尾の空白や「早番」などの表記違いは、この式では「早」と一致しません。また、スタッフを増やして5行目以降を使う場合は、集計行を移し、参照範囲も更新してください。
B1: =DATE(2026,11,1)
C1: =B1+1
D1: =C1+1
B5: =COUNTIF(B2:B4,"早")
B6: 1
B7: =B5-B6
B5・B7を、それぞれD列まで右にコピーする。
C3を「早」から「休」に変えると、C5は0、C7は-1。この節の参照資料:Microsoft Support「Microsoft Excel で COUNTIF 関数を使用する」
無料・マクロなしのテンプレートは機能を読んで選ぶ
シフト表の無料テンプレートを選ぶときは、配布条件と自動化できる範囲をそれぞれ確認します。「無料」はファイルの配布条件であり、利用するExcel環境の費用や、保守・更新の手間までなくなるわけではありません。「日付自動」「時間集計」「自動割当」のどこまで対応するか、説明や試用データで確認します。
本記事の例は通常の数式だけを使い、VBAマクロも割当ソルバーも含みません。マクロなしでも集計はできますが、希望休から配置案を自動生成する機能はありません。逆に、マクロ付きのファイルなら必ず自動配置できるとも限りません。ボタンで印刷や表の初期化を行うだけの場合もあるため、何が変更されるかを確認します。
ファイルを選ぶ基準は、対応人数、入力できる勤務パターン、予定時間の計算条件、変更してよいセル、利用可能なExcelの版です。まず架空の3人だけで試し、数式セルに直接勤務コードを上書きしない構造か、担当者以外でも操作を説明できるかを点検しましょう。
自動割当をしたいなら、条件を数値で定義する準備が必要
「毎日早番を1人」「S01は水曜勤務不可」「閉店には担当可能者を1人」といった条件から配置を探すには、それぞれを判定できるデータにする必要があります。Excelのソルバーは、変数セルを変更し、制約の下で目的セルの値を最適化するアドインです。追加するだけで店舗の勤務ルールを自動認識するものではありません。
割当を設計する際は、勤務可否、時間帯別の必要人数、担当できる業務、個別の勤務条件を整理し、必ず守る条件と、できれば満たす希望を分けます。条件が両立しなければ配置案が成立しない場合もあります。空欄を適当に埋めることと、実行可能な勤務計画を作ることは区別してください。
本記事はソルバー用の完成モデルやVBAを提供するものではありません。自動割当が目的なら、条件を整理した上で、Excelでモデルを保守するか、AIや専用ソフトを使うかを検討します。選択肢の比較は別記事にまとめています。
月を替える前に、古い勤務が残らないか試す
今回の式でB1を別の月に変えても、B2〜D4の手入力は残ります。日付が変わることと、勤務データが翌月用に初期化されることは別の処理です。実運用では確定済みの月を保存し、次月用のコピーで入力を消す範囲を決めます。日付だけを更新して配布すると、前月の配置を新しい日付へ誤って引き継ぐおそれがあります。
一か月分へ拡張するときは、28日・29日・30日・31日の違い、人数追加時の集計範囲、勤務コードを変更したときの一致を確認します。日付が月末を越えても次月の日付が表示される式なら、対象月の外を隠すなどの処理も必要です。この3日間の例を、そのまま1か月分の完成版として使わず、月替わりの検証を追加してください。
配布前には、一つの勤務を変えて人数が連動するか、意図的な不足を表示できるか、保存した確定版を識別できるかを試します。集計結果が合っていても、休憩中の人数や業務担当までは数えていません。自動化した項目を明記し、残った確認を担当者が引き受けると、Excelを更新するたびに判断がぶれにくくなります。
- 架空データで勤務を一つ消し、人数と過不足の変化を確認する。
- 次月用コピーで、日付・入力欄・集計範囲をそれぞれ確認する。
- 対象期間と確定状態を記し、配置の最終確認後に共有する。
参考資料・記事について
公式資料の機能説明・制度案内を参照し、手順と記入例は当サイトで作成しています。想定例・試算は実在する店舗の実績ではありません。制度やサービスの条件は変更される場合があるため、参照先の最新情報もご確認ください。
- Microsoft Support:DATE 関数確認日:2026年10月25日
- Microsoft Support:Microsoft Excel で COUNTIF 関数を使用する確認日:2026年10月25日
- Microsoft Support:ソルバーを使って問題を定義し、解決する確認日:2026年10月25日
よくある質問
Excelでシフト表を無料で自動作成できますか?
自分で数式を入れたり、配布条件に合う無料テンプレートを使ったりすれば、日付や人数集計を自動化できます。ただし利用するExcel環境の費用は別です。スタッフの自動割当まで対応するかは、ファイルごとに確認してください。
マクロなしでも自動割当できますか?
通常の集計式を入れるだけでは割当は決まりません。マクロを使わずソルバーなどで割当モデルを作る選択肢はありますが、条件と変数の設計が必要です。本記事の数式例は集計用です。
人数が合っていればシフトは完成ですか?
合計人数だけでは、希望休、休憩中の配置、資格・担当業務、個別の勤務条件などを確認できません。何を数えた人数かを明確にし、時間帯と担当の点検を別に行います。
年月を変えれば前月の勤務も消えますか?
日付の式を変更しても手入力した勤務コードは残ります。確定版を保存してから次月用にコピーし、消す入力範囲と残す数式を区別して初期化してください。
次に確認したいこと
シフトの資料・テンプレートを見る
関連する解説や記入例を、ご自身の確認したい内容に合わせてご利用ください。