[Google Spreadsheet]5分単位切り捨ての給与計算

Google Apps

結論

=FLOOR(VALUE([働いた時間(6:00などが記入されている)のセル]),TIME(0,5,0))*24*[時給のセル]

給与計算のルール

・準委任契約で労働基準法が適用されない人向け
・残業計算なし
・5分未満の時間は切り捨てる

解説

時間を計算する時に重要なのは、
時給2000円の人が6:30働いたから、2000円×6:30としても正しい計算が得られないこと。
2000円×6.5として計算しなければならない。
SpreadSheetで6:30を6.5とするには少し工夫が必要である。
下記の部分が 6:30 を 6.5 としている箇所。

FLOOR(VALUE([働いた時間(6:30などが記入されている)のセル]),TIME(0,5,0))*24

まずは、時間を数値化したいので、VALUE関数を使う。
VALUEを使わなくても大体の場合はFLOOR関数だけで数値化もされるが、特定のケースでマイナス値になってしまう事象があったため、明示的にVALUEを使うことにしている。原因は調べていないが、おそらく書式の設定などだと思う。

VALUE(テキスト)

VALUE(6:32) = 0.272222…

ここで1未満の小数点となってしまうのは、24:00 = 1 という単位で数字を表現しているため。

今回は、5分単位で切り捨てを実現したいので、6:32 の場合は、6:30として数値化をしたい。

5分未満切り捨てはFLOOR関数を利用する。

FLOOR(値, [基準値])

5分単位で計算をしたいため、基準値に5分を与える。5分単位は TIME(0,5,0) で表現をする。

TIME(時刻, 分, 秒)

※内部的には数値で計算されているはず

FLOOR(VALUE(“6:32”),TIME(0,5,0)) = 0.270833…

ちなみに6:30で計算すると

VALUE(“6:30”) = 0.270833…

となるため、正しく計算されていることがわかる。

この時点では、24:00 = 1 となっているため、計算した値に24をかけてやると、6.5 という数字が得られる。

0.270833… * 24 = 6.5

この値に時給をかければ、計算ができる。

少数になる場合は、運用に応じて切り上げROUNDUP(値, 0)、切り捨てROUNDDOWN( 値, 0)、四捨五入ROUND( 値, 0 )を利用すれば完成。

コメント