• ベストアンサー

EXCELの再計算について

EXCELにて、多くの計算式が入ったブックを使用しています。 計算方法は自動のままなので、セルに何か入力するとそのたびに再計算となり数秒入力ができなくなります。 しかし、原因は不明なのですが、再計算の最中にキー入力やマウスクリックがあると再計算が一時停止してすぐに入力ができ、入力が終わって数秒後に再び再計算が行われる状態になっているときがあります。 この状態がすごく調子がいいのでいつもこの状態にしておきたいのですが、この状態になる条件がわかりません。 申し訳ありませんが、どなたかこの状態にする条件をご存知の方はご教授願います。 OS:Windows XP SP2 EXCEL Ver:2003

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

  • ベストアンサー
  • ok2007
  • ベストアンサー率57% (1219/2120)
回答No.5

No.3&4の者です。 > 特定のシートに対して計算方法の自動/手動設定はできるのでしょうか? たぶん、例えばこんなマクロを組み込むと、ご希望の設定になるかと思います。 手動にしたいシート名を「Sheet1」とします。 (1)まず、Microsoft Visual Basicの「ThisWorkbook」モジュールに、次のマクロを格納してみてください。 Private Sub Workbook_Open() If ActiveSheet.Name = "Sheet1" Then _ Application.Calculation = xlCalculationManual End Sub Private Sub Workbook_Activate() If ActiveSheet.Name = "Sheet1" Then _ Application.Calculation = xlCalculationManual End Sub Private Sub Workbook_Deactivate() Application.Calculation = xlCalculationAutomatic End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.Calculation = xlCalculationAutomatic End Sub (2)次に、手動にしたいシート「Sheet1」のシートモジュールに、次のマクロを格納してみてください。 Private Sub Worksheet_Activate() Application.Calculation = xlCalculationManual End Sub Private Sub Worksheet_Deactivate() Application.Calculation = xlCalculationAutomatic End Sub (3)これでブックを保存すると、ご希望の設定になるかと思います。 シート名が異なるときは、(1)で2箇所ある「"Sheet1"」の""内を、例えば「"固定資産"」といった具合に、該当のシート名に差し替えてください。 また、手動にしたいシートが複数あるときは、それぞれのシートモジュールに(2)のマクロを格納するとともに、(1)のマクロのうち2箇所ある If ActiveSheet.Name = "Sheet1" Then _ との部分を、 If ActiveSheet.Name = "Sheet1" Or ActiveSheet.Name = "Sheet2" Then _ といった具合に「Or」で連結してみてください。 これでいけると思いますヨ。

ra272
質問者

お礼

早速試してみたところ、シートごとに自動/手動が設定できました! Or で連結し、複数のシートを手動とすることもできました。 最初の質問とはズレてしまって申し訳ありませんでしたが、ホントに助かりました。 ありがとうございました!

その他の回答 (4)

  • ok2007
  • ベストアンサー率57% (1219/2120)
回答No.4

No.3の者です。計算方法の設定はご存知だったのですね。それは失礼いたしました。 ご質問事項からは外れてしまうのですが、複数ブックや複数シートを並行して使用する際に、特定のブックないしシートに対してのみ計算方法を手動にしたいときは、マクロを使うとラクチンだと思いますヨ。 例として、特定のブックに対してのみ手動に設定するマクロは、こんな具合かと思います。 Private Sub Workbook_Open() Application.Calculation = xlCalculationManual End Sub Private Sub Workbook_Activate() Application.Calculation = xlCalculationManual End Sub Private Sub Workbook_Deactivate() Application.Calculation = xlCalculationAutomatic End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.Calculation = xlCalculationAutomatic End Sub これをMicrosoft Visual Basicの「ThisWorkbook」モジュールに格納してブックを保存すると、そのブックを使用しているときのみ計算方法が手動になりますよ。

ra272
質問者

お礼

ok2007さん、丁寧にありがとうございます。 早速モジュールに格納して使用してみようかと思います。 こちらも少しずれて申し訳ありませんが、特定のシートに対して計算方法の自動/手動設定はできるのでしょうか? 元となるシートのみ自動計算とし、その元となるシートを使って表を作成している他のシートは手動とできないものかと過去いろいろ調べたのですが、どうもシート単位では設定できないようなので諦めていました。 申し訳ありませんが、もしできるようでしたら教えていただけると助かります。

  • ok2007
  • ベストアンサー率57% (1219/2120)
回答No.3

DSUM関数は、データを書き換える度に再計算が実行されます。これを回避するには、計算方法を自動から手動に変更するといいですよ。 自動・手動の選択は、「ツール」-「オプション」の「計算方法」タブでおこなえます。手動にした状態でエクセルに計算を実行させるには、F9キーを押せば良かったかと思います。

ra272
質問者

お礼

そうですね。多くのデータを入力する際には「手動」としています。 しかし、同時に開いている他のブックも手動になってしまうのでイマイチ使い勝手が悪いのです。すぐに自動に戻せばいいのですが忘れっぽいものですから…。 どうもありがとうございました。

  • gutoku2
  • ベストアンサー率66% (894/1349)
回答No.2

>再計算の最中にキー入力やマウスクリックがあると再計算が一時停止してすぐに入力ができ、 私は、本来ならばAccess等のデータベースソフトで集計すべき2万件~4万件の データをExcelで行っています。(65536件以上はAccessを使用しますが・・・) 割と複雑な関数を使っていますので再計算に数十秒~1分かかります。 (まあ、PCも古いですが) 再計算中に任意のセルをダブルクリックすると再計算は止まります。 (私の場合は規則性があり、これで必ず再計算が止まります) その間に入力をすれば、確かに入力できます。 但し、再計算が再開されるのは必ず何秒後と規則性が発見できませんから必ず   ツール - オプション - 計算方法 にて    ”再計算実行” を行います。   (関数の計算結果が途中で止まっていると困りますから・・・・) これが、Excel2003の標準機能か否かは分かりませんが、ご参考まで。

ra272
質問者

お礼

任意のセルをダブルクリック…。思いもよりませんでした。 知らず知らずの間に私もやっていたのでしょうか…? (他のアプリケーションが関わっているのかとまで思いました。) 私の場合は再計算は数秒で終わるので、セルに入力後しばらくすれば次のセルに入力できますが、連続で入力するときはストレスがたまりますね。 明日早速試してみたいと思います。 どうもありがとうございました。

  • diio-bri3
  • ベストアンサー率34% (130/382)
回答No.1

数式もマクロの状態もわからなければ、 誰も回答できないと思います。

ra272
質問者

補足

説明が不足していて申し訳ありません。 元となるシートに数値が入力してあり、その数値を使って他のシートでいろいろな表を作成するようになっています。使用している関数はほとんどDSUMです。 DSUMを使用して表を作成しているシートは10シートほどあります。

関連するQ&A