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で判断は人、作業は機械に任せる

4 時間前
読了時間: 4分

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

自動で作ったシフト、足りない日だけ直せますか。

この記事では、飲食店向けに納品したシフト作成ツール(Excel VBA)で使った工夫のひとつ、「人数が足りない日だけを作り直す」仕組みを紹介します。シフト表ツールの工夫を紹介するシリーズの4本目です。

ポイントは、全部を自動にしないことです。誰に出てもらうかは管理者が決め、時間の配置だけをVBAがやり直す。この分担にした理由と、操作の流れを順に説明します。

 

足りない日は、誰かに出てもらうしかない

シフトを自動で作っても、どうしても人数が足りない日が出てきます。そういう日は、休みの予定だった誰かに出てもらうしかありません。

足りない日は誰かに出てもらうしかない

ところが、誰に頼むかは、お店の事情を知っている人にしか決められません。表のデータだけでは分からない事情があるからです。

 

決めるのは人、やり直すのは機械

そこで、誰を出勤にするかは管理者が決め、時間の配置だけを機械がやり直す形にしました。

決めるのは人、やり直すのは機械

役割の分け方は次のとおりです。

  • 管理者: 誰に出てもらうかを決め、その人の休みを出勤に変える

  • VBA: その日の時間の配置、休憩の入れ方、条件のチェックをやり直す

人が決めるのは「誰を出すか」の一点だけです。そのあとの、何時から何時までどこに入れるか、休憩をどこに入れるかといった面倒な作業は、VBAが引き受けます。時間帯ごとの配置の考え方は「時間帯ごとの必要人数に合わせてシフトを自動配置する」で紹介しています。この記事の仕組みは、その配置を、足りない日の分だけやり直すためのものです。

 

ダブルクリックで飛んで、直して、その日だけ作り直す

操作の流れは3つの手順です。

ダブルクリックで飛んで、直して、その日だけ作り直す
  1. 時間別の表で人の行をダブルクリックすると、日別の表の、その人のその日のマスに飛ぶ

  2. 休みを出勤に変えて時間別の表に戻り、「表示日のみシフト作成」ボタンを押す

  3. その日だけを作り直す。ほかの日の結果はそのまま残る

 

ダブルクリックで、日別の表の「その人・その日」へ

このツールには、1日分を時間ごとに見る「時間別の表」と、期間全体を日ごとに見る「日別の表」があります。出勤か休みかを決めているのは日別の表なので、休みを出勤に変えるには、日別の表で該当のマスを探す必要があります。

人数が多いと、目で探すのは手間です。そこで、時間別の表で人の行をダブルクリックすると、日別の表の「その人・その日」のマスに移動するようにしました。シートの BeforeDoubleClick イベントで、ダブルクリックされた行(どの人か)と、表示している日付(どの日か)から移動先のセルを計算しています。

下の画面は、ダブルクリックで移った先の日別の表です。カーソルの位置が、その人のその日のマスです。

ダブルクリックで移った先の日別の表

 

その日だけを作り直し、ほかの日は残す

休みを出勤に変えたら時間別の表に戻り、「表示日のみシフト作成」ボタンを押します。すると、表示している日だけを作り直し、その日の分だけを入れ替えます。

ほかの日の結果には手を付けません。全体を作り直すと、すでに確認を終えた日まで配置が変わってしまうからです。直したい日だけを直せることが、手で微調整する場面では大切だと考えています。

 

実際の画面

実際の画面では、ダブルクリックで2つの表を行き来しながら、数回の操作で調整できます。

表を行き来して数回の操作で調整

時間別の表の人の行には「ダブルクリックで日別割振における設定シフトへジャンプします」というコメントを付けて、操作を覚えていなくても気づけるようにしています。動きの流れは、冒頭の動画でご覧いただけます。

 

応用のヒント

判断は人に残し、面倒な作業だけを機械に任せる。この分け方は、シフト以外にも使えます。

判断は人に、作業は機械に
  • 配送の計画: どの車を増やすかは人が決め、ルートは作り直す

  • 工程表・生産計画: 急ぎの案件を人が決め、その日の段取りを組み直す

  • 予約・席の割り当て: 優先する予約を人が決め、残りを割り当て直す

どれも、全部を自動にしようとすると「現場の事情」を取り込むのが難しくなる業務です。人が決めたあとの作業を、すぐやり直せるようにしておく。私の経験上、この形のほうが現場で使い続けてもらいやすいと感じています。

 

動画で見る

 

まとめ

  • 人数が足りない日は、誰に出てもらうかを管理者が決める

  • 時間別の表で人の行をダブルクリックすると、日別の表の「その人・その日」のマスに飛ぶ(BeforeDoubleClick で移動先を計算)

  • 休みを出勤に変えて「表示日のみシフト作成」を押すと、その日だけを作り直し、ほかの日の結果は残す

  • 全部を自動にせず、判断は人、作業は機械と分けることで、現場の判断を残せる

自動化というと「全部を機械に任せる」ことを考えがちですが、人が決めるところをあえて残すのも、ひとつの設計です。

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

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

softex-celwareロゴ 透過 横長.png

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page