プロが教えるわが家の防犯対策術!

給与の計算をエクセルで行っているのですが、誤差が出て困っています。
A1に出勤時間(17:00)、B1に退勤時間(18:00)、C1に勤務時間を計算するため(B1-A1)*24、D1に時給(100)、E1にROUNDDOWN(C1*D1,0)で答えが99になってしまいます。
色々他の値でも試してみたのですが、全ての時給、勤務時間で誤差が出る訳ではなく、時給が600円や700円の場合に誤差が出たり、勤務が15時から16時でも誤差が出たりします。どのような法則で誤差が出るのか全くわからず、修正方法もわかりません。
どなたか良い解決方法がお分かりでしたら教えていただけませんでしょうか?
そもそもこのような場合に上記のような計算式を使用するのが間違いであればそれもご指摘ください。
よろしくお願いします。

A 回答 (5件)

 A1~C1の書式を「数値」にして、小数点以下の表示桁数を10桁ぐらいにしてみましょう。

えらく半端な数値になっているはずです。
 もともと時間は60進法なので、PCの内部では半端な数値になっています。表示するときは丸めますが、計算上は半端なままです。そのため、このような計算では誤差が生じます。

 これを防ぐには、C1の内容を「=ROUND((B1-A1)*24,0)」とするとうまくいくと思います。
    • good
    • 0
この回答へのお礼

さっそくありがとうございます。
しかし上記のような方法にすると17:30~18:00までの勤務の際には整数にされてしまうようです。

お礼日時:2006/04/18 10:03

(B1-A1)*24の代わりに=HOUR(B1-A1)ではダメでしょうか?

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

ほんと初心者で申し訳ないのですが、こちらの関数でも30単位の計算ができないようです。きっと分単位の関数もあると思うのですが他の方法にしてみます。
ありがとうございます。

お礼日時:2006/04/18 10:06

E1: ROUNDDOWN(C1*D1,0) → =ROUNDDOWN(ROUND(C1*D1,10),0)

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

この方法が一番すっきりするようです。実は質問ではわかりやすくとても単純に書きましたが、実際は時間帯によって時給アップなどあるものですからもっともっと複雑な計算式になっていまして、こちらの式を投入するのが一番いいようでした。
本当に助かりました、ありがとうございます。

お礼日時:2006/04/18 10:09

No.3 です。



C1 は勤務時間として、単に =B1-A1 とするのが見た目にも自然かと。その場合は、
E1: =ROUNDDOWN(ROUND(D1*C1/"1:0",0),0)
とすればよろしい。
    • good
    • 0
この回答へのお礼

重ねてありがとうございます。
そうですね、その方法もあると思いますが、勤務時間の計算の式がもっと複雑で時間帯によって違ったりするものですから、NO.3の式を投入する方がすっきりしました。

お礼日時:2006/04/18 10:10

丸め誤差を知る上で、ここは必ず目を通しておいた方が良いと思います。



http://pc21.nikkeibp.co.jp/special/gosa/
答えは第三回位に?

あと、こちらも
http://support.microsoft.com/default.aspx?scid=k …
    • good
    • 0
この回答へのお礼

ありがとうございます。
勉強になります。ちゃんと自分で勉強して使いこなせるようになりたいものです。

お礼日時:2006/04/18 10:11

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