[[20041211072601]] 『関数の答えを四捨五入しないようにする』(困っています) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『関数の答えを四捨五入しないようにする』(困っています)

[関数の答えを四捨五入しないようにするには]

=IF(SUM((C5+D5+E5)/1000)-SUM(B2:B5)=0,SUM(B2:B5),"違います")

のような関数のセルのSUM((C5+D5+E5)/1000)の部分の解が1,9や2,9

になると四捨五入してしまい関数を入れているセルに”違います”が表示してしまいます。

SUM((B3+C3+D3)/1000)を四捨五入しないようにするにはどのようにすると良いのでしょうか。

 出来高   か    き   く
あ1.0    855 	 64 	81
い0.3    274 	 15 	11 
う0.3    279 	 16 	5
え0.3    292 	 5 	3
(関数セル)1700  100  100

表としては上記のような感じです。

OSはWin2000・エクセルはExcel2000です


 SUM関数で勝手に四捨五入することはありません。
=IF(SUM((C6+D6+E6)/1000)=SUM(B2:B5),SUM(B2:B5),"違います")
これでどう?
(みやほりん)


衝突しました。
 朝一からですね(^_^A;
 みやほりんさん、おはようございます。

 ご提示の式では関連性が判らなかったんですが、以下の式の間違いではないでしょうか。
 =IF(SUM((C5+D5+E5)/1000)-B5=0,SUM(B2:B5),"違います")
 ※通常 SUM((C5+D5+E5)/1000) では四捨五入は行われていません。
 違うとすれば、エクセルが持っている少数誤差の所為かもしれません。
 以下が参考になります。
http://pc21.nikkeibp.co.jp/special/gosa/eg1.shtml
 (川野鮎太郎)


 みやほりんさんの式で意味が判りました(^_^A;
 私の式は間違いですね。

 となると、出来高によって求める か、き、く の計算によっては
 逆に か、き、く によって出来高を出している場合も
 "違います"になる可能性がありますね。
 追加しました。
 (川野鮎太郎)


 少数誤差に関して、
=SUM((C6+D6+E6)/1000)-SUM(B2:B5)
とすると、セルの値は0になりますが、
=(SUM((C6+D6+E6)/1000)-SUM(B2:B5))
とすると、-2.22045E-16が返ります。
まったく同じ計算をしているように見えても結果が違います。
どうもこの辺が怪しいです。
まことに不気味な現象ですが、計算の過程によっては
このような誤差が発生しているという好例だと思います。
(みやほりん)


 回避策もないと方手落ちですね。
少数同士の計算で誤差が出るのなら、整数値にまで数値を直して
計算させると誤差は吸収されます。
B2:B5の1000倍を計算する作業列を作ってその作業列の値と
SUM(C6+D6+E6)の値を比較する、もしくは、
 
下記数式のように有効桁整数になるような計算式で。
=IF(SUM(C6+D6+E6)-SUM(B2:B5*1000)=0,SUM(B2:B5),"違います")
(配列数式なので、Ctrl+Shift+Enterで確定)
 
(みやほりん)


 突然思いついたので、表示形式による対処法を。
B2:B5の表示形式をユーザー定義で 0.0,として、
か、き、くの数値を単に合計するだけにします。
件の数式は
=IF(SUM(C6+D6+E6)=SUM(B2:B5),SUM(B2:B5),"違います")
として、この数式のセルも 0.0,とします。
これなら表示形式以外、テクニック必要なし。
(みやほりん)


 横から失礼しますm(_ _)m 本題からはずれるのですが・・・
 =IF(SUM((C6+D6+E6)/1000)=SUM(B2:B5),SUM(B2:B5),"違います")
 この数式ですが、私なら
 =IF((C6+D6+E6)/1000=SUM(B2:B5),SUM(B2:B5),"違います")
 =IF(SUM(C6:E6)/1000=SUM(B2:B5),SUM(B2:B5),"違います")
 のように書くのですが、(C6+D6+E6)/1000の部分をSUM関数で処理する
 理由があるのでしょうか?
  # 何か訳があるのか気になって仕方がありませんので
  # 質問させていただきます。
    (Hatch)


 私は縦と横の計算が合ってるか確認のためだと思いました(^_^A;
 (川野鮎太郎)


質問させてもらいました、[困っています]です。
 Hatchさんのご質問に対してですが、川野鮎太郎さんの仰っている通り
 入力した数値に間違いがないか確認するためにこのような数式をつくりました。
 数式の”SUM(C5+D5+E5)/1000”の部分間違っていましたすいません。
 C6・D6・E6の間違いでした。といっても既に修正していただいていましたが...
 その後ですが、みやりほんさの数式で表示できました。
 それ以外で質問なのですが下記数式だと 
 =IF(SUM(C6:E6)/1000=SUM(B2:B5),SUM(B2:B5),"違います")
 #VALUE!
 を表示するのですが’SUM(C6:E6)/1000’の部分はセルを足算するのと
 同じことだと思うのですが不思議です。
 もうひとつの疑問である四捨五入の件ですが、別のセルでSUM(C6+D6+E6)/1000
 を計算させると’2’と解がでたので、最初の計算では違うことになるのかなと
 思い今回質問させていただきました。
 皆さんの色々なアドバイス参考になりました。有り難うございます。


 >=IF(SUM(C6:E6)/1000=SUM(B2:B5),SUM(B2:B5),"違います") #VALUE!を表示するのですが
 こちらでは「1.9」と表示されます。

 >別のセルでSUM(C6+D6+E6)/1000 を計算させると’2’と解がでたので
 そのセルの表示桁数を増やしてやれば(小数点表示桁上げボタンをクリックすると)
 1.9となるのでは?  Excelは実際の値を表示桁で四捨五入した値を表示します。
     (Hatch)

 Hatchさん返信有り難うございます。
 もう一度、数式見たところ、()が多かったです。
 >=IF(SUM((C6:E6)/1000)=SUM(B2:B5),SUM(B2:B5),"違います")
 とSUMの後に((C:6:E6/1000)としていたため#VALUE!となっていました。
 それとセルの表示桁の件ですが、桁を増やせば1.9と表示するのは分かっているのですが
 最初に質問した数式の
 IF(SUM((C6+D6+E6)/1000)-SUM(B2:B5)=0,SUM(B2:B5),"違います")
 SUM((C6+D6+E6)/1000)の解が2でSUM(B2:B5)の解が1.9なので
 2−1.9=0.1となり違いますと表示するのかなと思ったので質問しました。
 2となると思ったのは別セルでSUM(C6+D6+E6)/1000をさせて2となるのでそう思いました。
 又、括弧の使いかたで答えが違ってくるとは不思議です。
 見た目には同じような気がするのですが...

(困っています)


 C6=1700 D6=100 E6=100  で=SUM((C6+D6+E6)/1000)=1.9となります。
 なお、=SUM(C6+D6+E6)/1000=1.9 と同じ結果になります。
 そちらのシートとこちらに提示されたものと、どこかちがうのでは?
  (Hatch)

hatchさんの指摘の通りセルの設定が数値になってました。
 すいません、違うセルで確かめていたので標準になっていると思っていました。
 こちらの確認不足でした。

(困っています)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.