• ベストアンサー

Excelのマクロで結果が一時的にエラーに

Excelのマクロを使ってデータの算出を行ってから、 そのシートをコピーして別のBookに保存しています。 これまで保存したBookに特に問題が生じたことはなかったのですが、 今朝1枚のシートの数字に「1」だけ誤差がありました。 SUM関数を使った数式が間違ってコピーされたのかと思い確認していたら、 他のシートの数字をチェックしている間にきちんと直っていました。 数字も数式も何も変更しておりません。 どこか間違っていたならそこを直せば良いだけですが、 間違っていた訳ではないため対処方法がわかりません。 このような場合はどうしたら良いのでしょうか? ご存知の方がいらっしゃいましたら、どうかよろしくお願い致します。

noname#69711
noname#69711

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >今朝1枚のシートの数字に「1」だけ誤差がありました。 それだけで分かりません。 しかし、 >SUM関数を使った数式が間違ってコピーされたのかと思い確認していたら、 数式コピーというのは、いずれにしてもマクロの範疇からは多少はなれています。VBAの数式コピーは、特殊というか一回キリのマクロが多いです。ですから、数式をコピーするというような場合、原則的に、Cells.Copy ->目的のシートの Range("A1")にPaste するという以外には、十分な注意が必要かと思います。 マクロでは、値コピーが基本です。プロパティは、□.Value = □.Value ということです。(理由は、計算過程よりも、コピー先で、ファイルのサイズの軽減されることを目的とするからです。) おそらく、後で値が変わるというのは、オプションの「計算方法」が自動になっていないということが考えられます。 それと、小数点の誤差の問題は、ワークシート上では、基本的に、演算過程に発生します。単独の定数の場合は、それ自体では補正が働きます。VBAの場合は、補正がなされませんから、Long型やInteger型ではなく、一般の方は、Currency 型で処理することが多いのですが、ここでは関係ないように思います。

noname#69711
質問者

お礼

Wendy02さん、どうもありがとうございます。 説明不足で申し訳ありませんでした。 数式コピーについては深く理解しないまま使っていたため、よく見直してみようと思います。 オプションの「計算方法」については他の方のPCなので、再確認をお願いすることにしました。 丁寧に説明して下さって、どうもありがとうございました。

その他の回答 (1)

  • cmc32000
  • ベストアンサー率41% (103/251)
回答No.1

エクセルの数値は、中身と表示は異なっています。 特に、金額(カンマ付き)の書式にした場合は、小数点以下は表示されませんが、半端な数値は保持されています。 これらを計算につかうと、小数点以下も計算されて誤差が出ます。 その誤差がたまって1狂うことはよくあります。 どこかの数式で、きちんと切り捨てておかないと、このようなことは出てきます。

noname#69711
質問者

補足

cmc32000さん、ありがとうございます。 数値が売上げの個数のため小数点以下の数字がない整数のみをSUM関数で足し算しているのですが、 それでもやはり問題が生じたのはカンマ付きだったからでしょうか?

関連するQ&A

  • エクセル2007マクロについて。お願いいたします。

    excelファイルの容量が10MBにもなってしまい大変困っています。すべてのシートを新しいブックにコピーしたのですがサイズは変わりませんでした・・・方法が間違っているのでしょうか??? 関数やマクロを組み込んだsheetが14枚くらいです。軽量化するにはどうしたら良いでしょう??また、肥大化しないためのマクロ等ありましたら教えていただけますでしょうか、よろしくお願いいたします。

  • エクセルマクロ

    入力したワークシートを 新しいブックにコピーして保存するマクロを作成しました。 ただ下記の様に保管すると、 数式もそのまま元のエクセルファイルの数式を参照してしまいます。 下記のマクロをあまり変更しないで、 値貼付け(もしくは値貼付けしながら、新しいブックへコピー) するにはどの様に変更するといいでしょうか? よろしくお願いします。 'Sub newfilesave() Sheets("Sheet1").Copy '名前を付け、ファイル形式も決めてデスクトップに日付を付けて保存する。。 'ActiveWorkbook.SaveAs _ ' Filename:="C:\Users\xxxxx\Desktop\" & Format(Now(), "yyyymmdd_hhmm"), _ ' FileFormat:=xlOpenXMLWorkbook 'End Sub

  • EXCEL別ファイルへのコピー

    WinXP & OfficeXP 使用です。 EXCEL にて、Sheet1 で SUM 関数を使って算出されたデータを 別のファイルもしくは、別のシートへ自動的にコピーされる方法を おしえていただきたいです。 Sheet1 にて、SUM を用いて計算された合計が、A1~A5に表示されたとします。 この5個の合計を、別のファイルのシート、もしくは、同じ Book内の 別のシートへ、5個のデータとしてコピーされて欲しいのです。 Sheet1 にて計算される合計はタイムリーに変化するものとします。 その場合どのような関数を使ったら良いのでしょうか。 ちなみに、この「5個の合計を計算する Sheet1」と「5個の合計がコピーさ れるシート」はテンプレートで保存もしたいのです。 (データのない状態で保存したい) もう少し具体的な説明が必要であれば 指摘おねがいします。

  • エクセル2007のマクロ異常

    旧エクセルでシートを新BOOKへコピーするマクロを使っていたのですが、エクセル2007でこのマクロを使うと、登録マクロが新BOOKのマクロに変わってしまって、元のBOOKに戻った時には、このマクロが使えません。マクロ登録で元のBOOKに登録替えしなくてはなりません。解決法をご指導ください。

  • エクセルのマクロを使ってシートごとに名前をつけて保存したい

    マクロ初心者です。宜しくお願いします。 1つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。

  • エクセルマクロで他のブックを複製するには?

    件名の操作ができるマクロを書きたいのですが、どなたか教えて頂けるでしょうか。 エクセル2007で、マクロで同フォルダにある別のブックそのものをコピーし、 同フォルダに複製してできたブックに別名をつけて保存するという作業をしたいと思っております。 別ブックからシート情報をコピーする方法などは見つかったのですが、 他のブックそのものをコピーするという方法が見つかりませんでした。 これが可能な事なのかもわかっていません。 どうぞよろしくお願いします。

  • エクセルマクロをバックグラウンドで実行しているように見せたい

    エクセルマクロでシートやブックを複数使い、 コピーやペースト、削除を何度もします。 その際に、他のシートやブックを何度も選択するので、 画面が絶え間なく動き、見ていることが出来ません。 こういったとき、どのようにして皆さんは対処しているのですか? ひょっとして、どこかのシートを開いたままで、 バックグラウンドで実行しているように見せることって出来るのでしょうか?

  • エクセル マクロ

    エクセル マクロで、シート1のA1セルないの文字列(数式)をクリックボードにコピーするマクロを組みたいのですが、セルのコピーは出来るのですが、文字列のみコピーが出来ません。貼り付けは任意でするので必要ないです。 初心者で何もわかりません。よろしくお願いします。

  • EXCELのシートのマクロ操作について

    EXCELについて質問がありまして、よろしくお願いします。 複数のシートがあるブックがあり、それを、それぞれシートごとに別のブックにしたいと思っています。 マクロやVBAなどを使って簡単に出来るものでしょうか? マクロ集などのサイトを探してみましたが、上手く見つけることができませんでした。 シート名をブック名として引き継いで保存できればベターだと思っております。それが出来なくてもブックとして起こせれば大丈夫です。 何かわかられましたらお教えいただけますと幸いです。 どうぞよろしくお願いします。

  • エクセルのブック間で値のみコピー

    エクセル 2003使用です。 エクセルのブック間におけるシートのコピーについてお願いします。 Book.Aのシート1の各セルは、関数の数式で入力(出力)されています。 このシートをコピーして、Book.Bにペーストしたいのですが、 コピーは、関数計算後の”結果の文字列”で行いたいです。 Book.Aのシート全体をコピーして Book.Bのシートに「形式を選択して貼り付け」 → 「値」 で可能なのですが、シート数が多いので困っています。 Book.Aのシートタブを右クリックして「移動またはコピー」で シートのコピーをすると、数式でコピーされてしまいます。 この方法で、値のみコピーのような方法はありませんでしょうか? よろしくお願いします。

専門家に質問してみよう