数千の行のデータを調べ、いくつかのフィールドの値に基づいて特定の行を編集する必要があります(条件を満たす場合)。Excel VBAループの効率の問題
問題は、(1ループあたり13秒、時には100ループを持つ)時間がかかることです... VBAをフィルタリングしてテーブルをフィルタリングし、フィルタリングされた行を処理しようとしましたが、同じ時間がかかりました。
While l < CurrAloc And k <= lastrow
If Cells(k, g) = "Pass" And Cells(k, h) <> "" And Cells(k, i) = "" And Cells(k, j) = "Available" Then
Cells(k, ULDecCol) = CurrCustomer
Cells(k, ULFromClassifierCol) = CurrClassifier
add_to_log k
Sheets("Unit List").Select
l = l + 1
End If
k = k + 1
Wend
あなたのコード全体ですか?あなたはあなたの言うように何千もの行をスキャンしているあなたのループの中で 'Sheets(" Unit List ")を選択します。このSelectを使って何をしているのか分かりません。 「選択」には多くの時間がかかります。 –
〜13秒が多いです。あなたはそのような単一のループでパフォーマンスの問題に直面してはいけません。おそらくあなたの 'add_to_log'に問題がありますか?あなたがそのログを書いていけないなら、どれくらい時間がかかりますか?あなたがログインしているときに別のシートを選択するを使用する場合:選択せずにそのシートに書き込もうとします。 – Jochen