[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『時間の計算が合いません』(kkk)
皆様、教えてください。
A1 → 14:00
B1 → 16:00
C1 → =B1-A1
D1 → =(C1/"0:30")*300
E1 → =ROUNDDOWN(D1*1/2,-1)
という式ですが、
E1が600になるはずが、590になるんですが、
どこか式がおかしいのでしょうか?
< 使用 Excel:Excel2010、使用 OS:Windows7 >
C1の式を =TEXT(B1-A1,"[h]:m")*1 としてはどうか (ねむねむ) 2016/10/14(金) 18:58
早速のレスありがとうございます。
確かに、教えていただいたとおり
C1の式を
=TEXT(B1-A1,"[h]:m")*1
とすれば、結果は合ってきますが、
どうして、上の結果が、590になるのでしょうか?
これは、エクセルのバグ?なのでしょうか?
A1とか、B1の時間を違う時間にすれば、結果は合ってくるんですが・・・・
どうも、腑に落ちません。そういうものと考えるしかないのでしょうか?
(kkk) 2016/10/14(金) 19:45
やはり、C1の式が
=TEXT(B1-A1,"[h]:m")*1
が正解なのでしょうか?
(kkk) 2016/10/14(金) 20:01
d1に表示されている値(1200)は、 1200と完全に一致していません。
未使用セルに次式を入れてください。 =D1=1200 (Trueが返ります)
ところが、次式ではFalseが返ります。 =D1-1200=0
D1の値が1200ならTrueになるはずですが、 Falseになります。
c2 =2/24
d2 =(C2/"0:30")*300
e2(600が返ります) =ROUNDDOWN(D2/2,-1) (x-ab) 2016/10/14(金) 20:40
E1 → =D1*1/2
として、小数点以下を表示するようにしてみてください。
599.99999999999900
とかなっているのがわかるでしょう。
いわゆる"演算誤差"というものです。
このテーマに関しては、
“達人”芳坂和行氏に学ぶ、エクセル「演算誤差」対策講座
http://pc.nikkeibp.co.jp/pc21/special/gosa/index.shtml(リンク切れ)
という有用な記事があったのだけど、整理されちゃたのかな、
リンク切れになってしまった。
"Excel 演算誤差"で検索して調べてみてください。
(γ) 2016/10/14(金) 21:10
レスありがとうございます。
なるほど、演算誤差なんですね
あまり遭遇したことが無いので・・・・
勉強になりました。
そうすると
演算誤差でググってみたところ、round関数で回避するようなことが
書かれてあったので
D1 → =ROUND((C1/"0:30")*300,20)
※round関数の最後の20に深い意味はありません。適当な数です。
とするのが、一般的なのでしょうか?
それとも、
ねむねむ様のおっしゃるとおり、
C1 → =TEXT(B1-A1,"[h]:m")*1
とするのが、一般的なのでしょうか?
(kkk) 2016/10/14(金) 21:24
結局、
D1 → =(ROUND(C1/"0:30",0))*300
という式で解決しました。
よくよく考えると、
入力する時刻は、30分単位であるため、
「C1/"0:30"」の式の結果は、必ず、整数となるため、
これで、よいのかと・・・・思います。
勉強になりました。ありがとうございました。
(kkk) 2016/10/14(金) 21:47
くだんの「演算誤差」の記事の件ですが、
国内では見つかりませんでしたが、
米国のアーカイブを探したところ発見できました(何か、トホホな感じ)。
http://wayback.archive.org/web/20061210204014/http://pc.nikkeibp.co.jp/pc21/special/gosa/index.shtml
です。
(ただし、第四回だけは charset が、なぜか JISコードになっており、
そのせいで文字化けしてそのままでは読めない。ソースに手を加えると良いかも知れない。)
(γ) 2016/10/16(日) 07:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.