top of page

​タグ一覧

配列処理(76)

シート・セル操作(37)

ファイル操作(33)

階層化フォーム(33)

開発事例(31)

図形操作(29)

設計思想(15)

ユーザーフォーム(12)

シフト表(12)

講座実施報告(12)

数学(11)

イベントプロシージャ(10)

開発効率化(10)

コード自動生成(10)

GAS(10)

技術解説(9)

ココナラ(9)

文字列操作(8)

Webアプリ(8)

Googleスプレッドシート(6)

その他(5)

アニメーション(5)

副業(5)

介護・福祉(5)

OneDrive(4)

条件付き書式(4)

イミディエイトウィンドウ(4)

クリップボード(4)

小説(3)

日報(3)

JavaScript(3)

PDF(3)

HTML(3)

公開ツール(3)

クラスモジュール(2)

コード解説(2)

パズル(2)

小ネタ(2)

フリーランス(2)

Antigravity(2)

カレンダー(2)

Enum(2)

医療(2)

LookerStudio(2)

リスキリング(2)

Discord(2)

Outlook(2)

デスクトップアプリ(2)

スクレイピング(1)

WebAPI(1)

PowerShell(1)

文書作成(1)

スプレッドシート(1)

経理(1)

超勉強会(1)

溶接ロボット(1)

楽天市場(1)

VBA不使用(1)

実行予約(1)

CAD(1)

給与計算(1)

QRコード(1)

python(1)

学校(1)

発注書(1)

【Excel VBA】シフトの自動配置は「足す」より「削る」|30分ごとの必要人数を満たす作り方

4 時間前
読了時間: 4分

まずは動画で、考え方と実際の画面をご覧ください(動画内のデータはサンプルです)。

30分ごとの必要人数を見ながら、シフトを手で埋めていませんか。

この記事では、飲食店向けに納品したシフト作成ツール(Excel VBA)で使った「時間帯別の自動配置」の考え方を紹介します。空いた時間に1人ずつ足していくのではなく、まず全員を希望の時間いっぱいに並べてから、条件を守れる範囲で勤務の端を削っていく、という作り方です。

このシリーズでは、同じツールで使った工夫を6回に分けて紹介します。今回はその1回目です。

 

飲食店のシフトは30分ごとに必要人数が変わる

飲食店のシフトは、30分ごとに必要な人数が変わります。開店直後は少なく、昼から夕方にかけて増え、閉店前にまた減る、という形です。

さらに、人数さえ足りればよいわけではありません。発注やレジ締めができる人も、その時間にいなければなりません。

30分ごとの必要人数の例。オープン・発注・レジ締めの担当者も、その時間に必要

このツールでは、1日を30分のコマに分け、コマごとの必要人数と、担当(発注・オープン・レジ締め・時間帯責任者)が必要な時間を表にしておきます。自動配置は、この表を満たすように出勤者と勤務時間を決める処理です。

 

空いた時間に1人ずつ足していく作り方は行き詰まりやすい

自動配置を作ろうとすると、まず思いつくのは「人が足りない時間に、1人ずつ足していく」作り方だと思います。

ところがこの作り方は、条件が増えるほど行き詰まります。先に入れた人に時間が偏ったり、気づくと発注の時間に担当できる人がいなかったりして、組み合わせを何度もやり直すことになります。

空いた時間に1人ずつ足していく作り方。1人に時間が偏る・発注の担当がいない、といった行き詰まりが起きる

 

逆に考える:全員を並べてから、勤務の端を削っていく

そこで、逆に考えました。手順は次の3つです。

  1. 出勤する人を、希望の時間いっぱいに並べる

  2. 長く働く人から順に、勤務の端の30分を外してみる

  3. 必要人数や担当の条件を守れるなら外し、守れなければ戻す

足すのではなく削っていく。必要人数と配置人数を比べながら、勤務の端の30分を外していく

最初に希望の時間いっぱいに並べるので、出発点では人数は多めになります。そこから余っている分を削っていくので、「足りない時間をどう埋めるか」を考える必要がなく、「この30分を外しても条件を守れるか」だけを確かめればよくなります。

この作り方のポイントは次のとおりです。

  • 外すのは勤務の端(始まりか終わり)の30分だけ。途中からは外さないので、勤務の途中に穴が空かない

  • 長く働く人から順に削るので、勤務時間の長い人から先に短くなっていく

  • 1コマ外すたびに、必要人数と担当の条件を確かめる。守れなければ戻すだけなので、判定が単純になる

 

 

最後に、人数に余裕のある時間帯へ休憩を入れる

勤務時間が決まったら、仕上げに休憩を入れます。労働時間に応じて休憩の長さを決め、人数に余裕のある時間帯に入れていきます。

余裕のある時間帯に休憩を入れる。休憩の長さは労働時間に応じて決める

休憩を最後に回すことで、勤務時間を削る段階では休憩のことを考えずに済み、処理を分けて組み立てられます。

 

実際の画面:ボタン1つで半月分を作成

実際のツールでは、ボタン1つで半月分(15日分)のシフトを作ります。録画で測ったところ、15日分の作成にかかった時間は約8秒でした。

ボタン1つで半月分を作成。15日分を約8秒(録画での実測値)

一括作成した直後の画面です。上の行に30分ごとの必要人数と設定人数、その下に発注・時間帯責任者・オープン・レジの担当が入る時間が並び、各スタッフの行には勤務する30分のコマと休憩が入ります(画面のデータはサンプルです)。

一括作成の直後のシフト表。必要人数・設定人数・担当の行と、スタッフごとの勤務と休憩

 

応用:時間で区切る割り当てにそのまま使える

「全部並べてから、条件を守れる範囲で端から削る」という考え方は、シフト以外でも、時間で区切って何かを割り当てる業務に使えると考えています。

  • 配車:車と運転手を、時間帯ごとに割り当てる

  • 会議室の予約:部屋と人数・設備の条件を満たす枠を決める

  • 工場・倉庫の人員配置:工程ごとに、必要な人数とスキルをそろえる

応用のヒント。配車・会議室の予約・工場や倉庫の人員配置

 

動画で見る

この回の内容は、YouTubeのショート動画でもご覧いただけます。

 

まとめ

  • 飲食店のシフトは、30分ごとの必要人数に加えて、発注やレジ締めなどの担当者もそろえる必要がある

  • 空いた時間に1人ずつ足していく作り方は、条件が増えるほど行き詰まりやすい

  • 出勤する人を希望の時間いっぱいに並べ、長く働く人から勤務の端の30分を外していく。条件を守れなければ戻す

  • 端からしか外さないので勤務の途中に穴が空かず、休憩は最後に余裕のある時間帯へ入れる

  • 実際のツールでは、半月分(15日分)を約8秒で作成した(録画での実測)

足すのが難しい問題は、いったん多めに並べてから削ると、確かめることが単純になる場合があります。私の経験上、条件の多い割り当てを組むときに役立つ考え方の一つです。

その作業、自動化できるかもしれません

毎月くり返している集計・転記・帳票づくりに何日もかかっていませんか。
Excelはそのままで、面倒な部分だけを自動化できます。ご相談は無料です。

softex-celwareロゴ 透過 横長.png

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2026 softex-celware。Wix.com で作成されました。

bottom of page