Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 7 Professional : Excel 2016)
小数点以下切り上げ
投稿日時: 17/12/28 10:59:34
投稿者: watoson

お世話になります。
 
小数点1位以下の切り上げを行いたく、Rondup関数を使用しているのですが、
まれに、計算結果が整数のものが発生し、計算結果が狂うことがあります。
 
 A   B C
1.2   9  11 <--- Roundup(A1*B1,0)
1.5  10 16 <--- Roundup(A2*B2,0)
となりますが、C2セルの乗算結果は15と整数なので、
乗算結果どおりの15となるようにしたいです。
 
ご教授お願いします。

回答
投稿日時: 17/12/28 11:37:51
投稿者: bi

演算誤差が発生しているのかも。
=ROUNDUP(ROUNDDOWN(A1,1)*B1,0)
だとどうなりますか?

投稿日時: 17/12/28 12:48:17
投稿者: watoson

biさんありがとうございます。
 
すみません、説明が不足していました。
 
例では、8列を整数にしてしまいましたが、A列もB列も少数点いかがあり、
また、少数以下の桁数もばらばらです。
 
ご教授いただいたのにもかかわらず、説明不足のため、
お手間を取らせてしまいました。
 
再度、よろしくお願いいたします。

回答
投稿日時: 17/12/28 16:29:36
投稿者: 半平太

 >小数以下の桁数もばらばらです。
  
 なら、こんな程度でいいんじゃないですか?(多分、実務的に考えてですけども)
      ↓
 =ROUNDUP(ROUNDDOWN(A1*B1,12),0)

回答
投稿日時: 17/12/28 16:42:19
投稿者: んなっと

A1の37.7が、直接入力したものではなくて
例えば 3657.8-3620.1 のような計算結果なのでしょうか。
 
   A  B  C  D    E    F
1 37.7 10 377 378 3657.8 3620.1
 
A1
=E1-F1
C1
=A1*B1
D1
=ROUNDUP(A1*B1,0)
 
もっと具体例があるといいですね。
 

回答
投稿日時: 17/12/28 18:07:39
投稿者: 細雪

エクセル・・・というか、コンピューターって、実は小数に弱いんです。
計算した結果、セルに「1.5」と表示されていても、
実は小数点以下の凄く小さな桁に「1」があったり※「1.50000000000000・・・・・・1」
実は「1.49999999999・・・・・・」だったりしちゃうんです。
 
エクセルで確認するならためしにA1セルに「8.3」、A2セルに「8」と打っておき、
A3セル辺りで引き算をしてみます。単純に
  =A1−A2
としてみます。
当然、「0.3」が返ってきますね。※表示形式によっては「0」かもしれませんが。
まぁ、0.3が来ているものとして、A4セルに
  =A3=0.3
としてやります。
いやいや、当然「TRUE」が返るでしょ、そのまんまじゃん。
と思いつつEnterキーを押すとあら不思議。なんと「FALSE」が返ってきました。
あれれ、おかしいな?と思いつつ、そのままA3セルの小数点以下の桁数を増やしていくと・・・?
小数点以下15桁目で突然「1」が出てきしまいます。
この「1」が誤差の原因なんですね。
コレはエクセルだけではなく、2進数を使うコンピューター全般で発生する誤差なんです。
ご興味がおありなら「浮動小数点型 誤差」で調べてみてくださいませ。
 
 
では、回避策は無いのか?と言われると、一応あります。と答えます。
色々と考えられるのですが、「小数の桁は5桁程度見れたら良いよ」というレベルなら、
エクセルの機能だけでほとんど何も考えずにクリアできます。
 
上述のテスト(A4セルにFALSEが出てると解り易いです)のまま、
リボンのファイルタブから「オプション」を選択、「詳細設定」をクリック。
下に進んでいくと「次のブックを計算するとき」という項目があります。
その中の「表示桁数で計算する」のチェックを入れてやり、OKして、シートに戻ります。
コレで文字通り「表示されていない小数部分は計算に影響を与えない」状態にできます。
 
で、先ほどのA3セルの表示形式で桁を一つ減らして14桁にしてやると・・・
お見事、A4セルが「TRUE」になりました。
誤差を回避できたことを確認いただけるはずです。
 
ただし、小数点から近い位置で誤差が出る計算式を入れてしまうと、これだけでは回避しきれません。
超精密に小数(先ほどの15桁のような微小な数)を扱うお仕事なら話は別ですが、
まぁ、実用レベルであればせいぜい4〜5ケタくらいでしょうから、大丈夫とは思います。
ご質問のケースだと、セルへの表示上は「1.2×9」「1.5×10」ですから、
このぐらいであればほとんど問題は出ないと思いますよ。
 
 
 
この設定は「ブックに保存」されますのでお気をつけてどうぞ。

回答
投稿日時: 17/12/28 21:27:16
投稿者: んなっと

完全ではないと思いますが...
 
   A  B  C    D    E
1  0.1 10  1 3029.3 3029.2
2  0.2 10  2 3014.3 3014.1
3  2.3 10  23 3037.5 3035.2
4  4.6 10  46 3018.8 3014.2
5  7.1 10  71 3027.3 3020.2
6  9.8 10  98 3021.4 3011.6
7 10.1 10 101 3026.8 3016.7
8 13.4 10 134 3029.1 3015.7
9 36.4 10 364  3037 3000.6
 
A1
=D1-E1
下方向・↓
C1
=ROUNDUP(TEXT(A1*B1,"標準"),0)
下方向・↓

回答
投稿日時: 17/12/29 16:29:57
投稿者: Mike

小数点を含む計算を Excel にさせるときの私の常套手段は、十分に小さい桁で四捨五入させておくこと。「十分に小さい」が重要で小さ過ぎても(例えば小数点以下 14桁とか)駄目今回の場合は「整数」(小数点以下0桁)を希望されているので、まぁ、小数点以下5桁を「十分に小さい」としましょ。
依って、
=ROUNDUP(ROUND(A1*B1,5),0)
としてみてください。此れを1行下にコピーすると、
=ROUNDUP(ROUND(A2*B2,5),0)
となるのは、イワズモガナですよね。
 
試してみて結果をお知らせください。

トピックに返信