- ベストアンサー
エクセルの動きを早くする方法
現在、株価の簡単な分析プログラムをエクセルでつくっています。 しかし、いろんなグラフや表を追加しているうちに、大きさが15Mほどになってしまいました。 データ量が大きくなると、必然的にファイルサイズも大きくなり、重たくなってしまうのは理解しているつもりですが、それでも、もう少し早く出来ないものか?悩んでいます。 サイズの大きいファイルを少しでも早く動かすことについて、なにかコツというかテクニックに覚えのある方、是非教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2です。お礼欄ご丁寧にありがとうございました。 >最近VBAが少しわかるようになりましたので、再計算ボタンをつくってみたいと思います。 私がVBAに言及したのは、再計算ボタンを作るためだけでなく、下記のような「ワークシート上の計算(式)を減らすために、VBAを実行する」ことにあります。 例 A1とB1を足したものをC1に出すとします。 普通はC1セルに=A1+B1と式を入れます。 100行あれば100個の式がシートに入ります。 一方VBAでは、シートにボタンを貼りつけ Private Sub CommandButton1_Click() Cells(i, "C") = Cells(i, "A") + Cells(i, "B") End Sub をボタンクリック時に(i=1からi=100まで)実行すると、結果は同じですが、VBAの方は、式が上記100個に対し0個となり、式の数が減らせると言うことです。 しかし入力時にすぐさまC1セルが正しい値に変らない などのデメリットも出てきますが。 ちょっと真意を理解していただいた気になったので、再度済みません。
その他の回答 (3)
- SAKURAMYLOVE
- ベストアンサー率30% (162/533)
遅くなる原因のひとつににデータを追加、変更するごとに自動計算するため、これが重いと感じることがあります。 ひとつの手としては、ツール/オプション/計算方法のタブから、手動にチェックを入れます。 これで、少し早くなりますが、再計算されないので、必要に応じてF9キー(再計算)を押して再計算させてください。 いずれにしても大きいファイルはトラブルの原因になりますので、危機管理の面からもシートは分散させたほうがよいです。
お礼
再計算の指定方法、よくわかりました。^^ 分散のご意見、参考にさせていただきます。 今まで、プログラムを更新する都度、別ファイルで保存して、一つ前のプログラムを保全する処置をとっていましたが、部門ごとに分ける方法も取ってみます。 どうもありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
>計算式の入ったセルは、約28万個入ったシートが6枚 エクセルで予想しているだろう以上の使用状況ではないでしょうか。 ○メモリを多少増設できる余地があるでしょうか。 ○計算式の設定されている個所を減らすことでしょう。 エクセルは、1セルデータが変るごとに全式(?)を再計算しているようです。関係セルだけを割り出す何か特別な工夫はエクセル内にあるとは思いますが。 計算式を減らす、それとて妙案はないでしょうが。 (1)値が変らないところは、値を自身のセルに複写して 式を消す。 (2)VBAが出来れば、ボタンをクリックした時にのみ 計算をさせる。オフライン・バッチ的考え方。 ほかに差分だけを変える考えを取り入れる。 これとてシステム練達者でないと難しいでしょうし。 (3)自動計算を手動計算にする。 (4)グラフや分析表はデータを持ってくるだけにして 元表とは表やブックを切り離す。連動性は少し犠牲にしても。 昔国内有数の大型機の経験で、事務計算処理型検索なのに、条件入力後30分後に結果が出るなんて経験をしたことがあります。これは他JOBとの関連でそうなる面もあり、本件と同じではないのですが、コンピュータ業務もデータ量やディスクI/O回数や計算回数が過大だと使い物にならない速度状態になります。
お礼
おっしゃるとおり、エクセルで処理するには大きくなり過ぎたように思っておりました。 メモリーは、まだまだ増設できます。512×4で2048までいけます。 また、エクセルは、都度都度再計算させているようで、最近実感しています。 計算箇所も減らしたいのですが、うーん、苦しいところです。 最近VBAが少しわかるようになりましたので、再計算ボタンをつくってみたいと思います。 とてもわかりやすいアドバイス、どうもありがうございました。
- HAL007
- ベストアンサー率29% (1751/5869)
マシンスペックやExcelのバージョンが分らないので何とも・・・ 簡単な方法は、シートを別のブックに移すなど分散する方法です。 また、指数計算の式が入っているセルは数値に置換えることで 再計算のセル数が大幅に減らせますので有効ではないでしょうか? 経験からですが余り大きくすると計算数値に狂いが生じとんでもない チャートになる経験があります。その事象が起きても処理速度などは 全然問題になっていなかったので驚きました。 因みにスペックは、CPU:P4 2.2Ghz、メモリー:768MB(RIMM)、 OS:Win XP Pro、Excel:Office XP SP2
補足
言葉足らずですみません。 以下、補足します。 CPU = P4 , 2.6Ghz memory = 512MB OS = XP pro EXEL = office pro 2003 です。 ちなみに指数計算はやっていません。 でも計算式の入ったセルは、 約28万個入ったシートが6枚、 内1枚は、条件分岐も入っているので、かなり重たいです。 約3万個入ったシートが5枚 その他、下のデータのシートが1枚 計12枚のシートがあります。 グラフは都合6つ入っています。 グラフのカーブから察するには、今のところ、計算エラーが起きている様子はないです。 シートを別ブックに分散する方法は試してみます。 お手数ですが、上記補足をふまえた上で、 重ねて、アドバイスお願いします。
お礼
たびたびありがとうございます。 VBAでそんな命令が出来るとは知りませんでした。 私のワークシートにうまく採用できると、飛躍的に計算するセルが減らせます。^^ なんか速度を上げるについて希望が持てそうなので、とても喜んでいます。 デメリット面もご教示いただいておりますが、実際に導入できた場合、メリットの方が大幅に大きいような気がします。 適切なアドバイス、重ねて御礼申し上げます。