dポイントプレゼントキャンペーン実施中!

https://oshiete.goo.ne.jp/qa/12370842.html
↑こちらの質問で休暇日数計算の誤差について質問させていただいたものです。

回答でいただいた式
=TEXT(INT(セル番号/"7:45")+MAX(セル番号-INT(セル番号/"7:45"),0),"d日とh:mm")

7:45を3回入力すると3日と7:45と表示されてしまう問題は、上記の式で解決できたのですが、その後、4:00など7:45に満たない時間を入力するとうまく反映されません。
7:45 3回 4:00 2回 (4日と0:00)と何時間何分の部分が表示されません。(正しくは4日と0:15)

時間も反映させられるような数式を今一度、ご教授いただけないでしょうか。よろしくお願い致します。

A 回答 (3件)

先ほどの回答者です。



ごめんなさい。
>元の値 - (Int(元の値/"7:45"))
は、
元の値 - (Int(元の値/"7:45")*"7:45")
が正しいですね。
(単純に落としてしまいました。すみません)

修正するなら、
=TEXT(INT(セル位置/"7:45")+MAX(セル位置-INT(セル位置/"7:45")*"7:45",0),"d日とh:mm")
    • good
    • 0
この回答へのお礼

続けての回答ありがとうございました!!
修正する事ができ、本当に助かりました!!

お礼日時:2021/05/21 17:10

No.1さんのご指摘ごもっとです。


時間計算は注意が必要です。以下のサイトをご覧ください。
https://docs.microsoft.com/ja-jp/office/troubles …
または、
http://mt-soft.sakura.ne.jp/kyozai/excel_high/21 …
>・小数を含む(可能性を含めて)データの判定は慎重に!
>少数演算は必ず誤差を伴うと考えて置きましょう。
という記述があります。
原因はコンピュータでの計算は2進数で行われているということ、そして『10進数の小数を2進数へ変換 及び 2進数から10進数へ戻す際の丸め誤差によるズレ』です。
つまり「7:45」という時間はEXCELの中では24時間を1とした少数であらわされるため、上記サイトり言葉を借りれば、「必ず誤差を伴う」ことになります。
完全に回避するためには「少数にしない」ことだと思います。
「7:45」をA1に入力したとして、セルの書式設定を数値に変更し、小数点以下の桁数を15桁にすると「0.322916666666667」と表示されます。
実際は循環小数であることがわかります。
本件ご質問は「年次休暇の計算をExcelでしたい」とのことですので、「7:45」と入力したとしても、計算は少数のまま行うのではなく、「分」に換算してから行う方法をお勧めします。
つまり、作業列を設けて、「7:45」と入力されているセルがC2にあったとして、D2に「=C2*60*24」を記述して「分」に換算するという手順を追加します。
合計計算もD列で行うこととします。
>同月で7:45を3回入力すると3日と7:45と表示されてしまいました。(正しくは3日と0:00)
ということですが、分単位の計算ですので、「同月で7:45を3回入力すると」D列の合計は「1395」になるはずです。
この合計値のセル番地がわかっていて、別セルに日・時間で表示したいとすれば
「=INT(セル番地/465)&"日と"&TEXT(MOD(セル番地,465)/1440,"h:mm")」
という数式を記述すればよいのではないでしょうか。
    • good
    • 0
この回答へのお礼

詳細なサイトまでご誘導いただきありがとうございます!
本当に勉強不足を痛感します…。
回答ありがとうございました!

お礼日時:2021/05/21 17:54

10進数に変換してから計算するのを前提にした方がいいのでは?

    • good
    • 0
この回答へのお礼

10進数が何なのかを分かっていないので、まずはそこから勉強してみます…!
回答ありがとうございました!!

お礼日時:2021/05/21 17:12

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