
No.5ベストアンサー
- 回答日時:
計算方法を自動計算にしているとA列に値を入れる都度、再計算が行われるので負担になる場合があります。
そこで、計算方法を手動計算にしてから目的の処理を行い、終了時に自動計算に戻すようにすると場合によっては早くなるかもしれませんので、お試しください。
自動、手動の切り替えはこんな感じです。
Application.Calculation = xlManual '手動にする
・
・
Application.Calculation = xlAutomatic '自動に戻す

No.6
- 回答日時:
' 配列を作成し、範囲に一度で投入します
Dim a(1 To 300) As Variant
Dim n As Long
For n = LBound(a) To UBound(a)
a(n) = "=VLOOKUP(B" & CStr(n) & ",C:C,1,FALSE)"
Next n
Me.Range("A1:A300").Formula = a
' 範囲の FormulaR1C1 に一度で投入します
Me.Range("A1:A300").FormulaR1C1 = "=VLOOKUP(RC[1],C[2],1,FALSE)"
ありがとうございます。当方は単純なものしか記述できないため、ご指摘のコードは大変難しいです。variant型もlong型も使ったことがありません。
いろいろ調べましたが、添え字の初めの整数と最後の整数を取得してfor文でaに格納し、一度に書き出す…ということだと思います。
大変勉強になります。

No.4
- 回答日時:
no.3
可能性はもう1個。
オートシェイプが増殖してませんか?
セルやシートのコピペを行なったり、更新するとどんどん増えます。
一度シェイプ全削除して見て下さい。
(画像も消えるのが難点)
For Each oShape In ActiveSheet.Shapes
oShape.Delete
Next
たびたびありがとうございます。幸いオートシェイプは使っておらず、単純にセルの値を参照して書き出しをするだけの処理になります。ただ、そのセルはVLOOKUP関数など、すべてのセルに関数が入っております。しかもifで分岐するなど、かなり複雑になっております。これが遅くなる原因になるでしょうか。

No.3
- 回答日時:
エクセルに値を入れると、入れた値が見えます。
2と入れると、セルに2が表示されます。
これはエクセルがセル内容の表示を更新表示しているからです。
データ量が多くなればなるほど、いちいちセル内容を表示更新するのですから、スピードがガクンと遅くなります。
セルの値を更新したり入力している時には、表示更新をstopしておけばスピードが速くなります。
Application.ScreenUpdating = False : 表示更新停止
Application.ScreenUpdating = true : 表示更新再開
No.2
- 回答日時:
エクセルのマクロは知りませんが、そのデータファイルをメモリー上に読み込み、一気に検索させるようにはできないのですか? それがこういう場合、普通の高速化手段だと思います。
マクロではありませんが、RAMDISK上にコピーするとかもありかな?
ありがとうございます。
配列変数はせいぜい1~2で、その配列は多くても15程度です。ですのでメモリの読み込みは多くはないかと思います。
特にfor文で、他シートを参照して書き込む を繰り返し、条件に合わなかったらfor文を抜け出す、といった処理が遅く、困っております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
-
エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ
Visual Basic(VBA)
-
〔Excel:VBA〕マクロの実行が異常に遅くなる
Excel(エクセル)
-
-
4
Excel VBAが徐々に遅くなる
Excel(エクセル)
-
5
Excel VBA での処理時間計測結果に大きなばらつきが出る
Excel(エクセル)
-
6
エクセルVBAのEntireRow.Hiddenをスピードアップしたいのですが・・・。
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
Excel VBA 処理後データが重たくなる&処理スピードが遅いのを解決したい
Visual Basic(VBA)
-
9
VBAを何回も作り直して、容量が増えた
Excel(エクセル)
-
10
マクロのスピードがダウンする??
Visual Basic(VBA)
-
11
処理速度にムラがあり過ぎる
その他(Microsoft Office)
-
12
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
13
(Excel VBA)シートコピー時マクロはコピーしたくない
Excel(エクセル)
-
14
同じマクロなのに結果が違う
Excel(エクセル)
-
15
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
16
VBAで、離れた複数の列に対して処理を施すには?
Visual Basic(VBA)
-
17
同じスペックなのに処理スピードが違う
その他(パソコン・スマホ・電化製品)
-
18
VBAマクロ非表示が遅いので早くしたい
Excel(エクセル)
-
19
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
20
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excel vbaで特定の文字以外が入...
-
VBA実行後に元のセルに戻りたい
-
RC表示に変数を入れる
-
任意フォルダから画像をすべて...
-
vb.netによるEXCEL値取得
-
VBAで自動集計(特定セルコピー...
-
Excel VBA頭文字検索方法につい...
-
ExcelのVBAで数字と文字列をマ...
-
VBA初心者です。結合セルを保持...
-
結合セルを含む列の非表示方法
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
連続する複数のセル値がすべて0...
-
Excelで指定した日付から過去の...
-
Book1のセルへ別Book(Book2)...
-
Excelのプルダウンで2列分の情...
-
Application.Matchで特定行の検索
-
DataGridViewで右寄せ左寄せが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
特定行の色を変えたい(FlexGrid)
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
VBA実行後に元のセルに戻りたい
-
Application.Matchで特定行の検索
-
”戻り値”が変化したときに、マ...
-
VBAでセルをクリックする回...
-
任意フォルダから画像をすべて...
-
Excel VBAで、 ヘッダーへのセ...
-
TODAY()で設定したセルの日付...
-
【Excel VBA】指定行以降をクリ...
-
Excel vbaで特定の文字以外が入...
-
ExcelのVBAで数字と文字列をマ...
-
Excel VBA、 別ブックの最終行...
-
DataGridViewの各セル幅を自由...
-
VBA ユーザーフォーム ボタンク...
-
連続する複数のセル値がすべて0...
おすすめ情報