- ベストアンサー
エクセル2010、VBAや関数について
- エクセル2010でVBAや関数を使用している際に動作が遅い場合、関数の使用が原因である可能性があります。特にG列からU列に関数を使用している場合、処理時間がかかることがあります。この問題を解決するためには、関数をVBAに置き換えることが有効です。
- 関数をVBAに置き換えることで、処理速度が向上し、動作がスムーズになる可能性があります。関数をVBAに置き換えるには、関数の処理内容をVBAコードに変換し、VBAモジュールに組み込む必要があります。また、関数の値を直接計算してセルに書き込むことで、関数の計算時間を節約できます。
- 関数をVBAに置き換える際は、関数の引数や処理内容を確認し、適切なVBAコードを作成してください。また、関数が複数のセルに対して計算を行っている場合は、処理の最適化を検討することも重要です。処理時間の短縮を図るためには、データの範囲を限定し、必要な計算のみ行うようにすることが効果的です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>>回答1補足 >>・[在庫.xlsx]指定抜き ブック名指定を外しついでにSheet名指定も未指定にします。(自分のSheetを見るようになります)実行中簡易版で走らせる為に変えてます。 =SUMIFS('[在庫.xlsx]02'!$AD:$AD,'[在庫.xlsx]02'!$AQ:$AQ,$A421・・ ↓ =SUMIFS($AD:$AD,$AQ:$AQ,$A421・・ >>・TextBoxをセルに変更 テキストボックスを作るのがめんどうだったので実行中A1に置き換えました。これも簡易措置。 If Me.TextBox1.Value <> "" Then ↓ If Range("A1").Value <> "" Then ここで思ったのですが自分で提示したものだしもう少し理解してから質問した方がいいのではないでしょうか・・ ブック指定とか値があるかのIF文とか基本中の基本なので・・・ まずはどこが遅いかの特定が先です。 全ての行にデバッグ行を入れてどの処理が時間が掛かったか見てください。 -最初の切り分け-(デバッグ) ・全体的に遅い→自動計算を疑う。(自動計算をやめて実行してみる)(搭載メモリなど環境も疑う) ・特定行が遅い→対策が絞りやすい。 -ブック読み込みが遅ければ- ps.のように指定をやめたり変えてみる(ネットワーク遅延や参照ブックに疑いをかける) -利用しているTextBoxが遅ければ- ps.のように参照を変えてみる -全体的に遅ければ- psのように関数を疑うorメモリや参照範囲も疑う ・ ・
その他の回答 (1)
- sora1515
- ベストアンサー率58% (54/92)
関数の自動計算をしてますが必要のないタイミングを見極めてこまめに止めてみてはどうでしょうか? Application.Calculation = xlCalculationManual あとどこで遅いかはステップ実行なりデバッグ入れたりすればどの処理が遅いかすぐわかりますよ。 ↓要所にデバッグ行追加の例 Range("A1").Value = "A : " & Format(Now, "hh:nn:ss") 処理A~ Range("A2").Value = "B : " & Format(Now, "hh:nn:ss") 処理B~ あと画面更新を止めておくとかもやってはどうでしょうか。 Application.ScreenUpdating = False 'マクロ開始時 Application.ScreenUpdating = True 'マクロ終了時 ps こちらの環境では提示マクロを試したら一瞬で終わります。 ・[在庫.xlsx]指定抜き ・TextBoxをセルに変更 ・SUMIFSを代替SUMIFに変更 ・A1~AG2000まで関数(SUMIF)あり ・End If追加
補足
ご回答ありがとうございます。psの部分について、どう変えたら早くなりますか?コードを教えて頂くことは可能でしょうか?
補足
説明不足のようでした。 在庫ブックにしか乗っていない情報を読み取っているため、この関数を入れないと不可能だと以前教えて頂きました。 VBAに関しても組んで頂いたため、あまり理解しておりませんでした。 デバッグと言うのもあまりわかっていないため、 これでは解決してないため、質問を変えて投稿してみようと思います ありがとうございました