top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(28)

開発事例(22)

シート・セル操作(18)

図形操作(13)

コード自動生成(10)

ユーザーフォーム(9)

文字列操作(8)

設計思想(7)

開発効率化(6)

数学(6)

GAS(5)

アニメーション(5)

技術解説(4)

講座実施報告(5)

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

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

副業(4)

クリップボード(4)

条件付き書式(4)

その他(4)

ココナラ(3)

小説(3)

HTML(3)

JavaScript(3)

OneDrive(2)

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

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

ステータスバー(1)

コード解析(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

ショートカット(1)

WebAPI(1)

色操作(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

カーソル操作(1)

【開発事例】勤務時間から給与計算を自動化するExcelツール― VBAを使わず、関数のみで実装した設計と構成 ―

更新日:1月7日

※掲載している内容・資料は、実際の案件に基づきつつ、個人・企業が特定できないよう内容を一部加工・再構成したものです。守秘義務に配慮し、実際の顧客情報等は一切含まれておりません。


【開発事例】勤務時間から給与計算を自動化するExcelツール― VBAを使わず、関数のみで実装した設計と構成 ―

概要|勤務時間から給与計算を自動化するExcelツール


本記事では、

・勤務時間から給与を自動計算するExcelツールの構成

・VBAを使わず関数のみで実装した考え方

・実際のシート構成例

を紹介します。


給与計算は一見単純に見えますが、勤務時間帯・残業・深夜・休日・会社独自ルールなどが絡むことで、手作業や目視確認が発生しやすい業務の一つです。

本事例では、そうした業務を Excel で整理・自動化した構成を解説します。


背景|給与計算業務で起こりやすい課題

給与計算業務では、次のような課題がよく発生します。

  • 出勤・退勤・休憩時間を入力しても、時間帯ごとの内訳(通常/深夜/早出)が分かりづらい

  • 残業・深夜・休日が混在し、計算ミスが起きやすい

  • 給与計算ソフトでは自社ルールに合わない

  • 従業員が増えるたびに Excel ファイルが複雑化する


特に、「時間帯によって計算方法が変わる」「会社独自のルールがある」といったケースでは、既製ツールでは対応しきれないことも多くあります。

その結果、

  • 手計算

  • 補助的な Excel ファイルの乱立

  • 最終的な目視チェック


といった非効率な運用になりがちです。


本事例で目指したこと

今回の Excel ツールでは、次の点を重視して設計しています。

  • 勤務時間を入力するだけで、労働時間・残業時間・各時間帯の内訳が自動で分かる

  • 従業員ごとの勤務状況を、1シートで完結して管理できる

  • 給与計算ルールの変更があっても、後から調整しやすい構成にする

  • VBA に依存せず、Excel の関数だけで実装する

このような考え方から、「構成」と「計算ロジック」そのものを整理することを重視しています。


詳細仕様(本ツールの前提ルール)

入力項目

従業員ごとに、以下の情報を入力します。

  • 有給取得時間

  • 出張かどうか

  • 出勤時刻

  • 退勤時刻

  • 休憩時間

  • 深夜帯休憩時間


給与計算に関する前提

  • 基本給

  • 時間給

  • 時間外時給

  • 法定外時給

  • 深夜割増時給

  • 休日出勤時給


を個別に設定できる構成としています。

休日・時間帯の扱い

  • 日曜日は休日として判定

  • 法定外休日は「設定」シートに事前登録

  • 5:00〜22:00 は通常勤務時間

  • 22:00〜5:00(29:00)は深夜勤務時間として深夜割増で計算

  • 5:00〜8:00 は早出時間帯として判定(※給与計算には直接影響しない)


実働時間の計算

実働時間は以下の式で算出します。

  • 退勤時刻 − 出勤時刻

  • − 休憩時間

  • − 深夜帯休憩時間


8時間を超える分は時間外労働として扱い、時間外時給で計算します。


技術要素|設計と計算の考え方

時間帯ごとの労働時間判定

出勤時刻・退勤時刻から、

  • 早出時間帯

  • 通常時間帯

  • 深夜時間帯


それぞれに どれだけ労働時間が含まれるか を計算しています。

そのために、各時間帯の労働時間を 1時間単位に分割して判定するという方法を採用しています。


24時以降の時刻入力ルール

計算を単純化し、ルールを統一するため、

  • 0:00 → 24:00

  • 1:00 → 25:00


といった形で入力する運用としています。

これにより、日付をまたぐ計算でも複雑な条件分岐を減らすことができます。


【レイアウト】

○「設定」シート

こちらに法定外休日の日付を一覧で入力する

「設定」シート


○従業員ごとのシート

従業員ごとのシート

「設定」シートで入力した法定外休日をCOUNTIF関数で判定している。

また、休日に当たる部分は網掛けの条件付き書式を設定することで、2種類以上の色で情報を確認できるようにしている

従業員ごとのシート
従業員ごとのシート

・年月は次に説明する「集計」シートにて設定したものを参照している(ここで入力は不要)

・出勤時刻、退勤時刻から早出時間帯、通常時間帯、深夜時間帯にどれだけ労働時間があるかを計算するために、各時間帯での労働時間を1時間ごとに分けて計算している。

従業員ごとのシート

・時刻の入力は計算がしやすさと、ルールの統一性を優先して0時以降は24時、25時と入力するようにしている。

・従業員の数だけ複製して使用できるようにしてある。

従業員ごとのシート

○「集計」シート

集計シート

・B列の従業員氏名をシート名として参照し、従業員別シートでの名前定義(有給、出張、休憩、実働、早出)なども利用してOFFSET関数とINDIRECT関数で値を参照するようにしている。

集計シート
集計シート

まとめ


給与計算は、

  • 正確性

  • 再現性

  • ルール変更への耐性


が求められる業務です。

本事例のように、Excel の構成そのものを整理し、計算ルールを明確化することで、手作業や確認作業を大きく減らすことができます。

会社ごとに給与計算ルールは異なるため、本記事の内容はあくまで一例ですが、Excel を使ったオーダーメイド構築の考え方として参考になれば幸いです。


Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

Softex-Celware

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

  • Facebook
  • Twitter
  • YouTube

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

bottom of page