◇-?=FLOORを使用して-るるぶ-12/30-15:02(147)-No.434517 ┣?!Re:=FLOORを使用して...-o6asan-12/30-17:16(144)-No.434533 ┣?!投稿者削除...-c-koban-12/30-17:33(144)-No.434536 ┗?!Re:=FLOORを使用して...-独覚-01/04-20:17(21)-No.435114
434517 | =FLOORを使用して | るるぶ | 2007/12/30-15:02 |
メーカー名:PC-KOUBOU パソコン工房 OS名:WindowsVista パソコン名:21322 ソフト関連:表計算Excel -- 計算で出た時間の10分未満をきり捨てようとしたのですが a2に18:00、b2に17:00 c2に=a2-b2 答え1:00 と出た状態で、c3に=FLOOR(C2,"0:10")を使用すると、 0:50となってしまいますなぜ1:00にならないのですか? よろしくお願いいたします。 |
434533 | Re:=FLOORを使用して | o6asan | 2007/12/30-17:16 |
記事番号434517へのコメント もともとPC内では10進数を2進数に変換して計算し,再び10進数に変換して表示します。 しかも無限桁まで扱えるわけではありませんから,桁落ちのため不都合が発生します。 これは,時間の計算に限らず,一般の四捨五入処理でも頻繁に見られる現象です。 さらに,EXCELでは時間の計算方法として,24時間を1として計算しています。 10分は1/144となり,割り切れない値となります。これを丸め処理して表示しているので 除算の絡む式だとどうしても誤差が大きくなります。 =(A2-B2)/TIMEVALUE("0:10")の結果を標準でなく,数値表示させると 5.99999999999999となっています。FLOOR関数では元の数値の倍数で計算しますので 0:50と表示されてしまうわけです。 面倒ですが, =TIME(HOUR(C2),ROUNDDOWN(MINUTE(C2)/10,0)*10,0) か,演算結果に影響を与えない数を加えた =FLOOR(C2+0.0000000001,"0:10") で処理すれば,期待通りの結果が得られると思います。 |
434536 | 投稿者削除 | c-koban | 2007/12/30-17:33 |
記事番号434517へのコメント 投稿者によって消されました。 |
435114 | Re:=FLOORを使用して | 独覚 | 2008/01/04-20:17 |
記事番号434517へのコメント るるぶさんは No.434517「=FLOORを使用して」で書きました。 TEXT関数を使用して以下のようにする方法もあります。 =FLOOR(TEXT(C2,"[h]:mm"),"0:10") Excelの演算誤差に関しては以下が参考になるかと。 「“達人”芳坂和行氏に学ぶ、エクセル(Excel)「演算誤差」対策講座」 http://pc.nikkeibp.co.jp/pc21/special/gosa/index.shtml |