- ベストアンサー
Excelのマクロで結果が一時的にエラーに
Excelのマクロを使ってデータの算出を行ってから、 そのシートをコピーして別のBookに保存しています。 これまで保存したBookに特に問題が生じたことはなかったのですが、 今朝1枚のシートの数字に「1」だけ誤差がありました。 SUM関数を使った数式が間違ってコピーされたのかと思い確認していたら、 他のシートの数字をチェックしている間にきちんと直っていました。 数字も数式も何も変更しておりません。 どこか間違っていたならそこを直せば良いだけですが、 間違っていた訳ではないため対処方法がわかりません。 このような場合はどうしたら良いのでしょうか? ご存知の方がいらっしゃいましたら、どうかよろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >今朝1枚のシートの数字に「1」だけ誤差がありました。 それだけで分かりません。 しかし、 >SUM関数を使った数式が間違ってコピーされたのかと思い確認していたら、 数式コピーというのは、いずれにしてもマクロの範疇からは多少はなれています。VBAの数式コピーは、特殊というか一回キリのマクロが多いです。ですから、数式をコピーするというような場合、原則的に、Cells.Copy ->目的のシートの Range("A1")にPaste するという以外には、十分な注意が必要かと思います。 マクロでは、値コピーが基本です。プロパティは、□.Value = □.Value ということです。(理由は、計算過程よりも、コピー先で、ファイルのサイズの軽減されることを目的とするからです。) おそらく、後で値が変わるというのは、オプションの「計算方法」が自動になっていないということが考えられます。 それと、小数点の誤差の問題は、ワークシート上では、基本的に、演算過程に発生します。単独の定数の場合は、それ自体では補正が働きます。VBAの場合は、補正がなされませんから、Long型やInteger型ではなく、一般の方は、Currency 型で処理することが多いのですが、ここでは関係ないように思います。
その他の回答 (1)
- cmc32000
- ベストアンサー率41% (103/251)
エクセルの数値は、中身と表示は異なっています。 特に、金額(カンマ付き)の書式にした場合は、小数点以下は表示されませんが、半端な数値は保持されています。 これらを計算につかうと、小数点以下も計算されて誤差が出ます。 その誤差がたまって1狂うことはよくあります。 どこかの数式で、きちんと切り捨てておかないと、このようなことは出てきます。
補足
cmc32000さん、ありがとうございます。 数値が売上げの個数のため小数点以下の数字がない整数のみをSUM関数で足し算しているのですが、 それでもやはり問題が生じたのはカンマ付きだったからでしょうか?
お礼
Wendy02さん、どうもありがとうございます。 説明不足で申し訳ありませんでした。 数式コピーについては深く理解しないまま使っていたため、よく見直してみようと思います。 オプションの「計算方法」については他の方のPCなので、再確認をお願いすることにしました。 丁寧に説明して下さって、どうもありがとうございました。