結論
=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 )を利用すれば完成。
コメントを残す