• ベストアンサー

Excel97で小数点の計算

Excel97です。 数字をリットルとミリリットルのセルに分けたいので、 リットル =INT(数字) ミリリットル=(数字-INT(数字))*1000 と入力しています。 リットルは正しい数字が出るようなのですが、ミリリットルの計算で 一定の数を入力するとおかしな値が出てしまいます。 例)6.93→ リットル=6, ミリリットル=630.000000000001 原因と解決方法をご存知の方どうか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.1

初めまして。サンプルマクロを組んでみました。次の要領で操作してみて下さい。 なお、シート1のA列に値を入力した時にB1にリットルの値・C1にミリリットルの値を表示させるように作ってあります。 ・新規シートを立ち上げ、Alt+F11キーを押してVBE画面を立ち上げ、画面左上のVBAProjectと書かれている下のSheet1をダブルクリックし、表示された画面の右側の白い部分に書きのコードをコピー&ペーストする。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myVlu As Variant If Target.Column = 1 Then Application.EnableEvents = False myVlu = Application.WorksheetFunction.RoundDown(Target.Value, 0) Target.Offset(0, 1).Value = myVlu Target.Offset(0, 2).Value = (Val(Target.Value) - Val(Target.Offset(0, 1).Value)) * 1000 Application.EnableEvents = True End If End Sub ・ALT+F11きーを押してエクセルの画面にもどり、A1に適当な値を入力してみる。 貴方様の思い通りの動作を体験できると思います。 もしご不明な点・不具合等がございましたらお気軽にお知らせ下さい。

Exceler
質問者

補足

ありがとうございます。 実はこれと同じようなマクロを組んでいてこの問題にあたってしまったのです。 VALではなくてINTを使っているということと VariantではなくDoubleを使っているという相違点がありますので、 こちらも試してみます。

その他の回答 (4)

  • comv
  • ベストアンサー率52% (322/612)
回答No.5

こんばんは EXCELの内部では2進方での演算処理で少数点以下の 計算処理は浮動小数点での処理となりますから10進方 での表記時に微細な誤差をともなうことが多々あります。 VBAでの処理ではないので参考程度ですが関数数式なら  =INT(MOD(A1,1)*1000) や  =MOD(A1*1000,1000) などでしょうか!

Exceler
質問者

お礼

大変お礼が遅れて申し訳有りませんでした。 どうやらcomvさんのおっしゃるとおり浮動小数点を使用することによる誤差のようですね。 皆様どうもありがとうございました。

  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.4

こんばんは。早速補足いただきまして有難うございます。 私のマクロは、整数部分を表示させるためにRoundDownを使用していますが、この点はIntを使用しても同じだと思います。ただ、小数部分を計算させるために、下のデータから整数部分を引いて小数部分を計算しそれを1000倍するように組んであります。ですから、問題はないと思いますが、私も勉強になりますので、ご迷惑でなければどのような問題が生じるのか教えて下さい。 歩手数をおかけいたしますがよろしくお願いいたします。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

セルA1「6.93」、B1「=INT(A1)」C1に 「=(A1-INT(A1))*1000」を入れるとB1は「6」、C1は「930」となりました。書式は標準です。 ミリリットル=630.000000000001の6はミスタイプしていませんですか。 それにしても最後の桁が1も表示形式の書式を「###.000000000001とするとそのように出ますが。

Exceler
質問者

補足

申し訳ありません、皆様の指摘されるようにインプットミスがありました。 最初の数字が「9.63」です。 リットルは「9」、ミリリットルは「630.000000000001」となりました。 書式は標準にしています。表示されているのは「630」ですが、値のコピーをすると質問の数字になります。 お手数をかけて申し訳ないんですが、再度のご回答をお願いできませんでしょうか。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

2つ問題があります。 (1)630.000・・・はインプットミスでしょう。 (2)目的のセルの書式設定で数字の小数点以下を0桁にしてください。   原因はやって見ればわかります。

関連するQ&A

  • excelの小数点の計算のことでわからないことがあります。

    excelの小数点の計算のことでわからないことがあります。 初歩的なことだと思うんですがわからなくて困ってます。 普段請求書をフリーでDLしたテンプレートを使ってるんですが 『数量』『単位』『単価』『金額』とセルがあり、そこにそれぞれ数字を打ち込んでいくんですが 『数量』のところに小数点を打ち込むと、『金額』が勝手に繰り上げられて計算されてしまいます。 たとえば 『数量』のセルに『20.8』と打ち込むと 『21』と変わって『金額』が計算されてしまうのです。 いろいろ調べたのですが初心者なのでよくわかりませんでした。 打ち込むだけのテンプレートでは小数点は計算できないんでしょうか・・・ 何かいい解決方法がありましたらよろしくお願いいたします。

  • エクセルで小数点と分数をひとつのセルに使う方法

     エクセル入力でひとつのセル内に、 例えば   1/3.5 と入力するにはどうしたらいいのですか? こう入力すると、エクセルが計算した値を 表示してしまうのです。 計算させないで、入力したままの形でセル上に 表示させるにはどうしたらいいですか?

  • エクセルの小数点の繰上げについて

    エクセルの数式で、セル内の数字(例20.2)0.4以下を入力した時に自動で21に繰上げる方法はありますか? 教えて下さい。宜しくお願いします。

  • エクセル2000の計算式について

    お世話になります。 エクセルで、B2セルに数値を入力すると その数値を予めC2のセルに入力されていた数値で割った値を D2に返すようD2セルに計算式を入力しているのですが、 昨日、いつもの様に数値を入力し、画面上では正常な値が出ているのを 確認したのですが、そのシートを印刷した所、 「4.08E+308」という値が印刷されました。 全く原因がわからないのですが、 ご存じの方がおられましたら 教えて頂けないでしょうか。 よろしくお願い致します。

  • エクセルで一つのセルで小数点以下と以上分けて計算

    エクセルで一つのセルに入力された数値(例 50.3)を、50と0.3、それぞれ別々の数字をかけて合計を出す事は可能でしょうか? たとえば、50には500を、0.3は3として150.5をかけ、答えの25000と451.5を足した25451.5を切り捨てて25451と表示したいという事です。 50と3に分けてセルに入力すれば簡単なのはわかっていますが、分けずに出来たらと思っています。 関数を調べてみたり色々としていましたが頭がパニックを起こしてしまい訳がわからなくなりました・・・ どなたかアドバイスいただけないでしょうか? よろしくお願い致します。

  • Excelの計算式について

    Excelの計算式について Excel2000を使用しているのですが、Excelの計算式の計算結果と 電卓を叩いて計算した結果が違っています。 計算式は単純な掛け算ですが、単純に数字の入っているセル同士の掛け算ではなく、 数式の入っているセル同士の掛け算なので、それが原因しているのでしょうか? どなたか解決策をお持ちの方がいらっしゃいましたら情報提供下さい。

  • EXCEL2003 小数点の計算式

    Windows XP EXCEL2003 を使用しています。 (1)-81028.566 (2)-80986.936 (3)-65422.635 上のような数字が入力されていて、 ((1)-(2))×(3) の計算をしています。 EXCELで計算すると答えが 2723544.2950503 と表示されてしまいます。 (-81028.566 - (-80986.936) * -65422.635 ↓ (-81028.566 + 80986.936) * -65422.635 ( )の中を計算すると-41.63 -41.63 * -65422.635 = 2723544.29505 となると思うのですがこの03はどうしてでてくるのでしょうか? ご存知の方いらっしゃいましたらよろしくお願いいたします。

  • 小数点の切り上げ方(?_?)

    仕事中なのですが・・・。3時までに仕上げなくてはいけなくて困っています! エクセルで表計算で数字を入力しています。 小数点以下を四捨五入するのですが、切上げ方が分からず・・・確か「セルの書式設定」からどうにかすればよかったような・・・ すみませーん!誰か教えて下さい!

  • excelの計算方法を教えてください。excelはoffice XPバ

    excelの計算方法を教えてください。excelはoffice XPバージョンです。 数字毎に数字が割り当てられており、割り当てられている数字の合計数を出すというものです。 例: 1=10 2=30 3=40 4=50 5=60 という風に各々数字が割り当てられているとします。 セルに左側の数字を入力していった際に、合計数は右側の数字の合計が出るようにしたいのです。 5 2 5 1 =160 といった感じになるような計算式を作る方法を教えてください。 説明が下手で申し訳ございません。 よろしくお願いします。

  • Excel 2003 計算結果をそのまま数字に

    Excel 2003で、A1に計算結果を求める式を 入力をするとします。 他のセルに入力されている値を足したり 引いたりして 例えば A1の計算結果が2となるとします。 答えが出た後に 計算過程は不要なので 他のセルの数字をすべて消した場合 A1の値はゼロになってしまいますよね。 このとき他のセルの値を消しても 計算式の答えがそのまま数値として残すことは出来ないでしょうか? A1に入力した計算式などを残す必要は全くないので 2という数字を残したいです。 セルの書式設定なんかを色々さわってみましたが どうやら目の付け所が全く違うみたいで どうしてもセルに数式が残ったままで 他のセルの値を消すとA1もゼロになります。 Excelに詳しい方教えてください。

専門家に質問してみよう