※ ChatGPTを利用し、要約された質問です(原文:VBAを使わず、計算式を使いまわし)
VBAを使わず、エクセルで勤務表を作成する方法とは?
このQ&Aのポイント
VBAを使用せずに、エクセルの計算式を使いまわして勤務表を作成する方法について紹介します。
具体的には、出勤時間と退社時間を入力すると、勤務時間が自動的に計算されるようになります。
現在の計算手法と比べて、日にちごとに異なる計算式を用意する必要がなくなり、メンテナンスやファイルサイズの問題を軽減することができます。
エクセルで勤務表を作っています。
たとえば、B2に出勤時間を、C2に退社時間を入力すると、D2に勤務時間が表示されます。
現在の計算手法は、A1、B1の値を別セルからそれぞれ参照し、計算をし、結果を別セルに表示させます。その結果をC1セルが参照して、C1セルに表示させるような手法をとっています。
※話を簡単にするための一例です。この程度ならダイレクトにC1に結果を表示させることは簡単ですが、実際にはさまざまな条件があるため、計算はもっと複雑です。
この手法だと、同じ計算式を日にちごとに用意しなければいけません。
計算式がそこそこ複雑なので、毎日分用意すると、メンテナンスやファイルサイズの問題などあまり
よろしくないと思っています。
そこで、VBAのFunctionプロシージャのように、計算式は1セットのみで、毎日の出勤、退勤時間を引数で渡して、結果を返すような方法はできないのでしょうか?
お礼
回答ありがとうございます。 下記回答者さまたちに感情的にコメントしてしまったことを反省しております。 確かに、複雑といっているだけで、具体的な例を挙げなかったことはよくなかったと思います。 どのように複雑か、簡単に書きます。(エクセルになれている方なら複雑でないかもしれませんが) 始業時刻と、就業自国以外の情報として、下記があります。 ・休憩時間(休憩時間の回数、また時期によって休憩時間や、休憩時間の開始時間が変わります) ・半日勤務か(午前、午後、時期(月)でも条件が変わります。) ・有給休暇か ・休日か、また、休日出勤か ・業務内容は何か ・すべて漏れなく記入されているか(チェック機能) ・早退、遅刻などした場合の対処(規定時間からのマイナスなど) ・どれだけ残業しているか(残業時間によってはアラームを出す機能) ・その他こまごまとした処理 上記を実現しようとすると、どうしても複数セル(というか、ある程度の計算エリア)が必要になってきます。ひとつのセルで、一行の式だけで実現するのは、到底無理です。 ですので、具体的な例は面倒だったので出さなかったのです。 ちなみに、現在作っている勤務管理表では、一日の判定につき、5×32(=160セル)のセルを使っています。(もちろん、すべて計算式のみでなく、テーブルの見出しや、説明文も込みで) それから、VBAについては私もそれほど詳しくはないのですが、間違った表現があったかもしれません。 >「VBAのFunctionプロシージャ」とは何でしょうか? Functionプロシージャ=ユーザー定義関数との認識でした。(違ってたらすいません) http://www.moug.net/tech/exvba/0100042.html http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_110_02.html