• ベストアンサー

ノートパソコン マクロ 計算処理速度 Excel2

Excel2007でマクロを使って計算してますが、一回につき4~5秒の時間がかかります。 1000回繰り返すと66~80分かかりまして、もっと時間短縮できないものかと思ってます。 もっと早く出来るようにするには何か方法はありますか?

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

  • ベストアンサー
回答No.9

実行中にハードディスクが動くようならメインメモリが足りない合図です。 処理が時々止まるようならスタック領域が足りない合図です。 前者はOSの上限までのメモリを積んでいないなら、RAMを増やすことで解決します。 力業での解決なら、どちらも64ビット版のエクセルを使うことで解決する可能性が高いです。 スタック領域の不足の場合、それをエクセル自身を含めて食いつぶすアプリをなるべく起動しないようにしたり、スタックを積まないようにマクロを見直すことです。 CPUの稼働が100パーセント近くになるならパソコンの性能の問題なので、マクロをやめてプログラム化することを考えてもいいかもしれません。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (8)

  • notnot
  • ベストアンサー率47% (4856/10272)
回答No.8

VBAコードを変更しないで速くするには、 ・メモリが4GBとかであれば8GB以上に増設する。 ・CPUが非力な場合(Corei3とかPentiumとかCeleronとかAtomとか)はPCを買い換える。 VBAコードを見直してチューニングすればもっと速くなる可能性もあります。

961awaawa
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
回答No.7

パソコンの性能が低いのでは? ノートパソコンの拡張性に乏しいので メモリ追加 HDDからSSD交換が一般的です (パソコンが古いと恩赦が少ないからお勧めしません) 高負荷&長時間で使えば パソコンも無理をします 当然 ノートパソコン内に熱が溜まり 排気熱&排気音が大きくなりますね ハード的には 拡張性の多いパソコンショップ製のデスクトップに変えたらどうですか? ソフトを快適に使うには 追加パーツを組みやすいパソコンが良いと思います

961awaawa
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1636/2481)
回答No.6

> 早くなればなるほどパソコンは熱くなったりしますか? ごめんなさいそのあたりはよくわかりませんが、早くても遅くてもパソコンは同じだけ一生懸命やっていると思いますので同じかなぁと…思うだけですが…。 あと、たしか計算式があってその結果をコピーしていたと思います。その部分をコピーしたシートでするように計算式をマクロで入れて(マクロで計算をするのでも)コピーが全て終わって最後に計算をするようにすれば一段と早くなるとは思います。

961awaawa
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.5

目的がわからないので的外れかも知れませんが、乱数を書き込むセルの代わりに二次元配列を使えないのですか? 他にはセルへの乱数書き込みが必要ならせめて dim cscreen as boolean cscreen = Application.ScreenUpdating dim cevents as boolean cevents = Application.EnableEvents dim ccalc as integer ccalc = Application.Calculation Application.ScreenUpdating = False Application.EnableEvents = False Application.Calculation = xlManual 処理 Application.ScreenUpdating = cscreen Application.EnableEvents = cevents Application.Calculation = ccalc くらいはやった方が良いでしょう。

961awaawa
質問者

お礼

すみません。まだまだ駆け出しなんでちょっと解らないです。でも、手の差し伸べ感謝します。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1636/2481)
回答No.4

CPUでも早くなると思いますが、以前の 1~10の数字を乱数で(U6:U15000)に表示 の一部を書き替えると c.Value = WorksheetFunction.RandBetween(1, 10) を Set Sh2 = Sheets("Sheet5") の後に Randomize を付けくわえて c.Value = Int((10 - 1 + 1) * Rnd + 1) 'Int((最大値 - 最小値 + 1) * Rnd + 最小値) なので c.Value = Int(10 * Rnd + 1) にすると乱数で表示にかかる時間が約60%になると思います。 コードを以下に書き換えると約15%になると思います。 どちらもこちらでのテスト値ですが… Typeが面倒ですよね…コピペとかできない環境なのでしょうか。 Dim buff() As Integer, LastColumn As Long, i As Long, MyCount As Long Dim minRnd As Integer, maxRnd As Integer Dim Sh1 As Worksheet, Sh2 As Worksheet Set Sh1 = Sheets("Sheet1") 'U6:U15000に乱数を表示するシート Set Sh2 = Sheets("Sheet5") MyCount = Sh1.Range("U15000").Row - Sh1.Range("U6").Row ReDim buff(MyCount) Randomize minRnd = 1 maxRnd = 10 For i = 0 To MyCount buff(i) = Int((maxRnd - minRnd + 1) * Rnd + minRnd) Next LastColumn = Sh2.Cells(6, Columns.Count).End(xlToLeft).Column + 1 If LastColumn < Columns("C").Column Then LastColumn = Columns("C").Column End If Sh1.Range(Sh1.Cells(6, "U"), Sh1.Cells(15000, "U")).Value = WorksheetFunction.Transpose(buff) Sh2.Range(Sh2.Cells(6, LastColumn), Sh2.Cells(15000, LastColumn)).Value = WorksheetFunction.Transpose(buff) Sh2.Cells(4, LastColumn).Value = Sh1.Cells(4, "AA").Value Set Sh1 = Nothing Set Sh2 = Nothing

961awaawa
質問者

お礼

18分も早くしあがりました。早くなればなるほどパソコンは熱くなったりしますか? 早くなった分パソコンの音が賑やかに感じます。

961awaawa
質問者

補足

凄い!一回2.5秒になりました。ちょっと600回試してみます。

全文を見る
すると、全ての回答が全文表示されます。
  • kon555
  • ベストアンサー率52% (1767/3390)
回答No.3

計算の内容次第で回答が完全に変わるので、一律で『早くする方法』はありません。 例えば無駄な計算が多いとか、セルに頻繁に書き込んでいるとか、selectを多用しているとか、そうした原因を解明しない事には対策は不可能です。 ちなみにCPUやメモリといったPCスペック面での改善は、コードの内容次第ではさほど効果が出ない事も多いですよ。 (演算以外の部分で時間がかかっているコードなど)

961awaawa
質問者

お礼

やっぱり。色々聞いてからにした方が良さそうですね。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • kkkkkm
  • ベストアンサー率65% (1636/2481)
回答No.2

セルに書き込むという動作を頻繁にしているのでしたら、そこのところを変更すす必要があります。

961awaawa
質問者

お礼

こんにちは、kkkkkmさん。この前はありがとうございます。 今はあまり合わさったマクロソースを色々触りたくない気がしますw もっと早く出来たら面白いのになぁと思いながら別のことをもしながら見守ってる状態です。 CPU等をかえたら早くなることってあるんですかね。 この前の乱数の件の続きで、10000回の計算をあっというまに出来たら良いのになぁと思ってます。

全文を見る
すると、全ての回答が全文表示されます。
  • emaxemax
  • ベストアンサー率35% (43/121)
回答No.1

その時間がかかるコードを見せてもらえないと良いアドバイスはもらえないんじゃないかと思います。

961awaawa
質問者

お礼

それ以外はCPUの変換とかになりますか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel2003において、マクロを使用して、ファイルを出力する仕組み

    Excel2003において、マクロを使用して、ファイルを出力する仕組みを作っておりますが、最初の数回は、かなりの速さで、処理が終了しますが、途中から再計算の表示が出るようになり、ファイルを出力するまでにかなりの時間がかかってしまいます。出力するまでの時間を短縮する良い方法はありませんか? ちなみに、ファイルの出力は、マクロの記録で作られたマクロを流用したものです。また、一度に読み込むデータは、100個くらいです。 参考までに環境を書いておきます。 OS: Windows XP SP3 Office: Office2003 SP2 CPU: Pentium4相当 メモリ: 1GB

  • エクセル マクロ 計算時間を短縮したい

    =SUMPRODUCT(min((f:f>=s2)*(f:f<s2+730)*r:r)) 上記の関数を、オートフィルで数百行下までコピーするというマクロを作りました。 しかしかなり計算時間がかかります。 計算時間を短縮する方法があれば教えてください。 計算結果が同じで時間が短縮するなら上記の関数を使わなくてもいいです。 f:fとr:rの範囲はこのマクロを使うファイルによって異なりますが、 最上行から最下行まで空白はありません。 エクセル2010です。 cpuはcore2duo E6400です。

  • Excel2000で作成したマクロがExcel2007で動かない

    Office2000にあるExcel2000で作成したマクロを プリインストールされたExcel2007でマクロを動作させると フリーズしてしまいます。 回避方法はあるでしょうか。

  • Excel2010で古いマクロを使いたい

    Win7でExcel2010を使っています。 Excel2000や2002で使えていたマクロを使いたいのですが、そのままではエラーが出てしまいます。 何か良い方法はあるでしょうか? とりあえずは、Excel2000を入れたXP機を残しているので、そちらでは使えるのですが、いちいち切り替えて使うのが面倒です。 Win7にもExcel2000を入れて共存させるという方法もあるでしょうか?

  • Excel2007に最適なノートパソコン用

    Excel2007 をhp compac 6710 bを使ってます。 マクロで多くのデータを処理するのですが、何かしたら速くなるのかなぁ、と思ってここで質問しました。 計算の処理速度が速くなるノートパソコン用CPU って何がお薦めですか? こちらまだまだパソコン不馴れ段階でして、 初期Celeronだとそりゃ遅いわって言われました。

  • Excel2007で4時間掛かるマクロをしてまして

    Excel2007で4時間掛かるマクロをしてまして、作動途中に他の用事をしてると途中で 画面が黒になりましてwindowsの表示がでるので、そうなると計算速度が凄く遅くなります(クリックで画面を戻す度に、下辺りに出てくるフィルメーター?の読み込みに時間が凄くかかってるのか毎回その様になってしまいます)。マクロ作業が終わるまで画面が変わらない様にするにはどうしたらよろしいですか?

  • Excel2010でマクロが止まる

    Excel2003で作成したマクロがExcel2010で使えません。 内容は任意のフォルダ内にある同じフォーマットの複数のファイルを1ファイルづつ開いては別の1つのファイルのシート毎にコピーしていくマクロなんですが、21個目のファイルを開こうとした際にループが止まってしまいます。 どなたか解決方法をご存知でしたらご教授願います。

  • 「EXCEL2002」でマクロが動作しない

    以前EXCEL2000でセルにマクロで作った計算式(=deltad(A22,B22))を入れていました。 その時は問題なく動作していました。 しかし、パソコンを買い換えてEXCEL2002にしたところ マクロが動作せず、セルに「#NAME?」と表示されます。 どうしたらマクロを動作させることができるでしょうか?

  • PowerPoint・マクロ・計算しているような動きの処理

    宜しくお願いします。 変な質問なのですが、例えばExcelでボリュームのある計算をマクロに組んで実行させると 画面が ガチャガチャガチャっと動きますよね。。。? あんな感じの動きをパワーポイントにボタンを置いて、押下のタイミングで表示しているスライド上で2秒程やりたいのですが、どうしたら良いか分かりません。 ボタンを置いて動作の設定でマクロを実行させる事は出来たのですが そんな、2秒も動かないと言うか。 forで回して適当に作ったフォームを表示したり閉じたりしているだけなんですが。 フォームが真っ黒になってしまうのも直せないし、困っています。 フォームでなくて例えばスライドの文字を変更させて戻すとかもしたのですが、一瞬で終わります。 forで回すのを増やせば良いのか・・・もっと良い方法があるのではと思っています。 変な要望なのですが、分かる方いらっしゃいましたらお願いします。

  • Excel2007のWebクエリとマクロについてです。

    Excel2007のWebクエリとマクロについてです。 初投稿です。わかりづらい質問で申し訳ないのですが、気になる点があればすぐに補足しますのでよろしくお願いします。 気象庁のサイトから過去の気象データをWebクエリで参照しています。 下のサイトから1日分のデータをWebクエリを使って抜き出しました。(Excel2007) 1年分のデータ(365日分)を同じように抜き出したいのですがクエリで同じ操作をするのは面倒に感じています。 マクロのボタンなどで時間を短縮して参照する方法があれば教えてください。 www.data.jma.go.jp/obd/stats/etrn/view/hourly_s1.php?prec_no=73&prec_ch=%88%A4%95Q%8C%A7&block_no=47887&block_ch=%8F%BC%8ER&year=2009&month=01&day=1&view=p1 上記のyear=2009&month=01&day=1の部分を変化させて2009/01/1~2009/12/31までのデータをExcelに貼り付けたいです。