• ベストアンサー

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

エクセルで有給休暇の取得日数を管理しようとしています。 例えば 1日=7時間45分とし、取得時間が8時間ならば"1日15分"と表示したいのです。 いくつか計算式を考えていましたが、うまく表示されませんでした。 どなたか計算式をご教示いただければ幸いです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7991/21373)
回答No.1

時間数がセル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&"分" これで行けるはずです。

tora_w
質問者

お礼

お忙しいところ、御回答いただき、ありがとうございました。 希望どおりに表示できるようになり、大変嬉しく思います。 本当にありがとうございました。

その他の回答 (2)

回答No.3

一発で書くならこんな感じでしょうか 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日を越えるとき(ありうるのかな?) 一ケ月何日で数えるかによって変わってきます

tora_w
質問者

お礼

お忙しいところ、御回答いただきありがとうございました。 非常に参考になりました。 ご教示いただいた式もこれからも使えるよう、エクセルを勉強していきます。 本当にありがとうございました。

  • kgrjy
  • ベストアンサー率54% (1359/2481)
回答No.2

エクセルも、H22.4改正労基法も押さえての話ですが、年休の時間分割付与のかかわりでいうと、分刻みの付与は認められていません。時間単位です。 1日の所定就業時間が7時間45分であれば、年休時間付与は年休1日につき8時間(年5日分なら40時間分)として、1時間(所定労働時間を上回らなければ2時間、3時間単位も可)単位で付与させなければなりません。 累積8時間分の取得が年休1日消化となるので、分刻みの管理はあきらめてください。

関連するQ&A

専門家に質問してみよう