電子書籍の厳選無料作品が豊富!

エクセルで有給休暇の取得日数を管理しようとしています。

例えば
1日=7時間45分とし、取得時間が8時間ならば"1日15分"と表示したいのです。

いくつか計算式を考えていましたが、うまく表示されませんでした。

どなたか計算式をご教示いただければ幸いです。

よろしくお願いいたします。

A 回答 (3件)

時間数がセルA1に日付シリアルで設定されているとして。



まずは、データを分単位の整数に持ってきます。整数化しておかないと
演算時に妙な端数が出て正しく計算されない事がありますので。

[B1セル]:=A1*24*60

これが総取得時間(分)になります。これを、465分(7時間45分)ごと
に1日と数えればいいんですから

[C1セル]:=INT(B1/465)

これが日数になります。
元の「分」から「日数」に465を乗じた数字を引けば、1日の残りの
「分」が出てきます。

[D1セル]:=B1-C1*465

「分」のままじゃ表示できませんので、これを60で割って端数を切り
捨て、「時間」にします

[E1セル]:=INT(D1/60)

日と時間が分かったので、元の「分」からこれを引けばオッケー、

[F1セル]:D1-E1*60

文字列として「d日h時間m分」と出したいなら、必要なセルを"&"でひっつけて

[G1セル]:=C1&"日"&E1&"時間"&F1&"分"

これで行けるはずです。
    • good
    • 1
この回答へのお礼

お忙しいところ、御回答いただき、ありがとうございました。

希望どおりに表示できるようになり、大変嬉しく思います。

本当にありがとうございました。

お礼日時:2010/02/23 15:47

一発で書くならこんな感じでしょうか


a1のセルに 7:45 8:00 といった時間が入っているとすると

=TEXT(DATE(1,0,INT(TEXT(A1,"[mm]")/465))+TIME(0,MOD(TEXT(A1,"[mm]"),465),0),"d日 h時間mm分")

但し、a1 が7:45未満 や 31日を超える場合は、日の繰り上がりくり下がりが発生しますので、ifを使用して、分岐させる必要があります

7:45未満のとき
=TEXT(DATE(1,0,INT(TEXT(A1,"[mm]")/465))+TIME(0,MOD(TEXT(A1,"[mm]"),465),0),"h時間mm分")

31日を越えるとき(ありうるのかな?)
一ケ月何日で数えるかによって変わってきます
    • good
    • 0
この回答へのお礼

お忙しいところ、御回答いただきありがとうございました。

非常に参考になりました。
ご教示いただいた式もこれからも使えるよう、エクセルを勉強していきます。

本当にありがとうございました。

お礼日時:2010/02/23 15:45

エクセルも、H22.4改正労基法も押さえての話ですが、年休の時間分割付与のかかわりでいうと、分刻みの付与は認められていません。

時間単位です。

1日の所定就業時間が7時間45分であれば、年休時間付与は年休1日につき8時間(年5日分なら40時間分)として、1時間(所定労働時間を上回らなければ2時間、3時間単位も可)単位で付与させなければなりません。

累積8時間分の取得が年休1日消化となるので、分刻みの管理はあきらめてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!