エクセル実践塾 > エクセル実践塾2016

労働時間を計算するユーザー定義関数を使って、 残業時間を求めるユーザー定義関数を作りたい

 

既存のユーザー定義関数は、 別のユーザー定義関数内で実行して、 その結果を利用することができます

たとえば、次のようなユーザー定義関数 CalculateOvertime では、出社時刻と退社時刻から残業時間を計算しています。

この関数では、CalculateWorkingHours 関数を使用して労働時間を取得し、所定の労働時間を減算して残業時間を求めています。


Function CalculateOvertime(出社時刻 As Date, 退社時刻 As Date) As Variant

 ' CalculateWorkingHours関数から労働時間を取得

 Dim 労働時間 As Single

 労働時間 = CSng(CalculateWorkingHours(出社時刻, 退社時刻, True))

 

 ' 所定の労働時間を設定

 Dim 所定労働時間 As Single

 所定労働時間 = 8 ' 8時間を所定としています

 

 ' 所定労働時間を減算して残業時間を求める

 Dim 残業時間 As Variant

 残業時間 = 労働時間 - 所定労働時間

 

 ' 残業時間が0以下の場合は、0ではなく何も表示しない

 If 残業時間 <= 0 Then

  CalculateOvertime = ""

 Else

  CalculateOvertime = Format(残業時間, "0.00")

 End If

End Function

 

@左図のようなCalculateOvertime関数を作成すると、指定た出社時刻と退社時刻からCalculateWorkingHours関数で労働時間を求められ、それを使って残業時間が取得できます

 

Function CalculateOvertime(出社時刻 As Date, 退社時刻 As Date) As Variant

出社時刻 と 退社時刻 はそれぞれ日付型であり、残業時間を計算するための入力となります。

 ' CalculateWorkingHours関数から労働時間を取得

 Dim 労働時間 As Single

 労働時間 = CSng(CalculateWorkingHours(出社時刻, 退社時刻, True))

CalculateWorkingHours 関数を呼び出して、出社時刻 と 退社時刻 から労働時間を取得します。

得た労働時間を、CSng 関数でSingle型に変換しています。

 ' 所定の労働時間を設定

 Dim 所定労働時間 As Single

 所定労働時間 = 8 ' 8時間を所定としています

所定労働時間 として8時間を設定しています。

 ' 所定労働時間を減算して残業時間を求める

 Dim 残業時間 As Variant

 残業時間 = 労働時間 - 所定労働時間

労働時間 から 所定労働時間 を減算し、その結果を 残業時間 に代入します。

空の文字列””を代入する場合もあるので、データ型は Variant にします。

 ' 残業時間が0以下の場合は、0ではなく何も表示しない

 If 残業時間 <= 0 Then

  CalculateOvertime = ""

 Else

  CalculateOvertime = Format(残業時間, "0.00")

 End If

End Function

残業時間 が0以下の場合は、空の文字列を、関数の結果を返すための変数 CalculateOvertime に代入し、

それ以外の場合は 残業時間 を小数点第二位まで表示する形式にフォーマットして、関数の結果を返すための変数 CalculateOvertime に代入します。

AこのCalculateOvertime関数の引数は、出社時刻と退社に時刻です

 

B残業時間が発生するときにだけ、その時間数が◯.◯時間の形式で表示されるようになります

必要に応じて、右寄せにします。

   
   
   
   
   
   
   
   
   
   
   
   
   
   
 

 

●出社時刻と退社時刻から、 所定の休憩時間を除いた労働時間を求めるための、 ユーザー定義関数を作る動画です

Dyson(ダイソン)オンラインストア

関連する他のページ

出退の時刻を簡単に記録したい
簡単なマクロを作れば、 「出社」や「退社」をクリック(タップ)するだけで現在日時を入力できる タイムカードを用意できます

セル範囲を対象とするユーザー定義関数を作りたい
For Each...Next ステートメントを使って、選択範囲に含まれるセルを順番に処理します

オリジナルの関数(ユーザー定義関数)を作りたい
Functionプロシージャとして、Visual Basicで作成できます

マクロを作りたい
「開発」タブを表示しておけば、 そこから「Visual Basic」を実行してマクロを作ることができます

“セキュリティの警告”が表示されるんだけど・・・
マクロを含むブックを開くときには、注意を促すべく、「セキュリティの警告」が表示されます

マクロ有効ファイルって何?
マクロを含むブックは、 マクロ有効ファイル(マクロ有効ブック)として保存しなければ、マクロが失われてしまいます

『セル範囲を検索して、 該当セルの右隣の値を取り出す』ユーザー定義関数を利用して、 文字列全体を置換したい
同じモジュールにあるユーザー定義関数は、 別のユーザー定義関数から利用することができます

セル範囲を検索して、 該当セルの右隣の値を取り出したい
10行程度のユーザー定義関数で可能です

指定色で塗りつぶされているセルの個数を求められる、 ユーザー定義関数を作りたい
ユーザー定義関数は、その処理を拡張できます

指定色で塗りつぶされているセルの個数を求めたい
塗りつぶし色を数値で表すユーザー定義関数を作れば、数式で求めることができます

平日夕方の指定時間帯の労働時間を確認したい
平日と夕方を条件として、 MIN関数で該当時間数を得ます

土日に祝日を加えた労働時間を集計したい
祝日であるか否かは、 COUNTIF関数を使った対象日の検索で確認できます

土日の労働時間を集計したい
WEEKDAY関数を使った配列数式で行えます

シフト時刻より遅れた出社時刻を強調したい
TIME関数で時刻化したシフトを、 出社時刻と比較して、 条件付き書式で強調する方法があります

残業時間を求めたい
労働時間から、 8時間を表す"8:00"を減算します

労働時間を求めたい
退社時刻から出社時刻と休憩時間を減算します

休日の早出時間の計算を無効にしたい
IF関数を使えば、 計算式に空セルが含まれるときなど、 計算結果を別の値に置き換えることができます

残業時間や深夜時間、早出時間を計算したい
MAX関数を使えば、 それが存在するときにだけその時間が表示されるようにできます

所定労働時間を求めたい
MIN関数を使って、 法定労働時間の8時間を最大値とする数式を設定します

勤務時間0を非表示にしたい
休日の勤務時間0は、 表示形式をユーザー定義することで非表示にできます

勤務時間を計算したい
退勤時刻から出勤時刻を減算することで、 勤務時間を求められます

労働時間や残業時間などの集計を行いたい
時間の集計は通常の数式で行えますが、 ○.○時間のようにしたいときには1時間で除算します

出勤していない日の計算は行わないようにしたい
IF関数式への条件の追加は、AND関数などを使って行います

残業があったときにだけ、その時間を表示したい
IF関数を使って、労働時間が8時間を越えるときにだけ、残業時間の計算を行うようにします

計算結果が0になるとき、それが表示されないようにしたい
表示形式で、値が0のときだけ白色で表示されるようにできます

土曜日の日にちを青色で、日曜日の日にちを赤色で表示したい
WEEKDAY関数を使った、条件付き書式を設定します

勤務時間0を非表示にしたい
休日の勤務時間0は、 表示形式をユーザー定義することで非表示にできます

勤務時間を計算したい
退勤時刻から出勤時刻を減算することで、 勤務時間を求められます

深夜時間を求めたい
深夜時間への区切りとなる22時を "22:00"という形で指定して演算し、 24(時間)を乗算して○.○時間で表示します

残業時間を求めたい
勤務時間を○.○時間という形ですでに求めているなら、 そこから8(時間)を引けば、 残業時間を求められます

勤務時間が0になるときには非表示にしたい
「ゼロの表示形式」を#にすると、計算結果が0のときに非表示になります

勤務時間を○.○時間という形で計算したい
時刻同士の演算に24を乗算すれば、○.○時間になります

計算結果の0を無効にしたい
IF関数を使えば、計算結果の0を無効にできます

計算結果の0を非表示にしたい
表示形式を「#」にします

 

 

 

 

 

出前館

アウトドア&フィッシング ナチュラム