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)で使った工夫のひとつ、「前の期間のブックを名前で探して自動で読み込む」作り方を紹介します。シフト表に限らず、月ごと・期間ごとにブックを分けて運用している方には応用しやすい考え方だと思います。

 

期間の境目をまたぐ連勤は、今のブックだけでは判定できない

このツールでは、シフトを月の前半と後半に分けて、期間ごとに1つのブックで作ります。そして配置の条件のひとつに「5連勤まで」があります。

ところが、この条件は期間の始めの数日だけでは判定できません。たとえば6月前半のブックを作るとき、5月後半の最後の4日間に続けて出勤している人が6月1日・2日にも出ると、合わせて6連勤になってしまいます。

連勤は期間の境目をまたぐ

今のブックだけを見ていると、前の期間の最後が見えません。正しく判定するには、前の期間の最後の数日のシフトが必要です。

 

アイデア1:ブックの名前に決まりを作る

そこで、ブックの名前を年月と前半・後半から作る決まりにしました。たとえば「シフト作成 202506 1前半」のような名前です。

名前が決まっていれば、今のブックの年月と前半・後半から、前の期間のブック名も計算で出せます。

  • 今が後半なら、前の期間は同じ月の前半

  • 今が前半なら、前の期間は前の月の後半(1月なら前の年の12月)

今が6月前半なら、前の期間は5月後半です。名前が決まるので、同じフォルダから開けます。

ブックの名前に決まりを作る

ここで大事にしたのは、名前を作る関数を1つにまとめることです。次の期間のブックを作るときも同じ関数で名前を作って別名保存し、読み込むときも同じ関数で前の期間の名前を作ります。保存と読み込みで別々に名前を組み立てると、どこかで表記がずれたときに見つからなくなるためです。

また、決まりどおりのブックが見つからないこともあります。そのときはファイルを選んでもらい、選ばれたブックの年月と前半・後半が、本来読み込むべき期間と合っているかを確かめてから読み込むようにしています。

 

アイデア2:最後の7日分を社員番号で突き合わせる

前の期間のブックを開いたら、最後の7日分を取り出して、今のブックの表の左側に並べます。

このとき、行の位置で写すのではなく、社員番号で突き合わせます。前の期間と今の期間とで、人が増えたり減ったりしていることがあるからです。

最後の7日分を社員番号で突き合わせる
  • 前の期間にいて、今の期間にいない人は読み込まない

  • 今の期間に新しく入った人は、前の期間のシフトが無いので空のまま

  • 並び順が変わっていても、社員番号が同じ人の行に入る

社員番号をキーにしておけば、人が増えても減っても行がずれません。ブックをまたいでデータを集めるときの考え方は、同じシリーズの「ブックをまたぐ年間集計」とも共通しています。

 

実際の画面

実際の画面では、日別の割り振り表の左の7列が、前の期間から読み込んだシフトです。この例では、今のブックが6月前半(1日〜15日)で、5月後半の最後の7日(25日〜31日)を社員番号で突き合わせて並べています。

左の7列が前の期間

表の上にある「前期間のシフト読込」のボタンで読み込みます。読み込んだ7日分があるので、期間の始めの数日についても、前の期間から続く連勤を含めて判定できます。

日別割振の表と前の期間の7日分

このツールでの自動配置そのものの考え方は「時間帯別の自動配置」で紹介しています。

 

応用のヒント:ファイル名に決まりを持たせる

ファイル名に決まりを持たせておくと、シフト表以外でも、前のブックの値を手で写していた作業を自動にしやすくなります。

ファイル名に決まりを持たせる
  • 前の月からの繰り越し:在庫や残高を、前月のブックから自動で取り込む

  • 前年同月との比較:1年前のブックを名前で探して、数字を並べる

  • 次の期間のブックを作る:決まった名前で別名保存して、表を空にする

どれも、名前を作る関数を1つにまとめ、保存も読み込みも同じ決まりで行うのがポイントです。

 

動画で見る

この回の内容は、短い動画でもご覧いただけます。

 

まとめ

  • 「5連勤まで」のような条件は、期間の境目をまたぐため、今のブックだけでは判定できない

  • ブック名を年月と前半・後半から作る決まりにすると、前の期間のブックを名前で特定して開ける

  • 名前を作る関数は1つにまとめ、保存と読み込みの両方で使う

  • 見つからないときはファイルを選んでもらい、期間が合っているかを確かめる

  • 読み込んだデータは行の位置ではなく社員番号で突き合わせると、人の増減で行がずれない

期間ごとにブックを分けて運用していると、前のブックとのつながりが手作業になりがちです。ファイル名に決まりを持たせるという小さな工夫で、そのつながりを自動にできる場面は多いと思います。

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

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

softex-celwareロゴ 透過 横長.png

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page