1
ここで私が見ているのは、VBA - 式がセル内で遅いかどうかを確認する
Sheets("Sheet1").Select
Range("D1:D1").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
これで問題は、私はそれを実行するたびに、それは私がAとBの列を持っている数式を台無しです:私は、私は、次のVBAを使っての一部をインポートするシートを持っています。次のようにだから私はそれをチェックしますサブを作成:
Sub fixAnB()
Dim sh As Sheet9
Dim rw As Range
Set sh = Sheet9
sh.EnableCalculation = False
'Sheets("Sheet1")
Dim i As Long
i = 0
Dim f1 As String, f2 As String
For Each rw In sh.Rows
i = i + 1
If i > 1 And sh.Cells(rw.Row, 4).Value <> "" Then
f1 = "=CONCATENATE(G" & i & ",J" & i & ")"
f2 = "=CONCATENATE(I" & i & ",H" & i & ",J" & i & ")"
If sh.Cells(rw.Row, 1).Formula <> f1 Then sh.Cells(rw.Row, 1).Formula = f1
If sh.Cells(rw.Row, 2).Formula <> f2 Then sh.Cells(rw.Row, 2).Formula = f2
End If
If sh.Cells(rw.Row, 4).Value = "" Then Exit For
Next rw
sh.EnableCalculation = True
End Sub
をこれで私の問題は、私がそのシート上の任意の場所の間2万200,000レコードを持つことができるということです。したがって、サブを使って数式を修正するには約10〜15分かかります。それはめちゃくちゃに私は私のデータ
または 2.ことを確認する方法をインポート参照をしないように、元の問題を解決するために
- 方法:私は解決策の一つを探していますフィクサーサブランウェイの方が速くなります。
yallとは何と思いますか?
が、私が代わりに[コードレビュー](httpsに投稿することをお勧め、ちょうど遅いです:// codereview.stackexchange.com/)。つまり、開始時にscreenupdatingを回してみてください( 'Application.ScreenUpdating = False')。 – BruceWayne
私は実際に#1への答えを期待していたので、そのサブルーチンをまったく実行する必要はありません –
データがテーブルとして設定されている場合、これが起こりますか? – QHarr