をクラッシュし検索と置換:私は以下のように、検索と置換、簡単なVBAコードを使用しています
Sub MultiFindNReplace()
'Update 20140722
Dim Rng As Range
Dim InputRng As Range, ReplaceRng As Range
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Original Range ", xTitleId,
InputRng.Address, Type:=8)
Set ReplaceRng = Application.InputBox("Replace Range :", xTitleId, Type:=8)
Application.ScreenUpdating = False
For Each Rng In ReplaceRng.Columns(1).Cells
InputRng.Replace what:=Rng.Value, replacement:=Rng.Offset(0, 1).Value
Next
Application.ScreenUpdating = True
End Sub
はしかし、データセットは大きな685000以上の値であり、これは私のExcelドキュメントをクラッシュし。私はエラーキャッチや他の方法を見つけて置き換えることを試みた。
両方の列がsheet2にあります。交換対象の列が列10、列と交換され、列17であり、18は
データは
999 999 5
5 1 4
27 2 4
3 3 2
... ... ...
999 207 1.3
スコア変身銀行
で銀行
時間とともにこの 時間のように見えます
検索686950のエントリを持つ最初のカラムのすべてを、2つのカラムそれぞれの変換されたスコア(カラム3)に置き換えます。これには、80の異なる月次エントリのバンクがあります。
単純な「VLOOKUP」で十分でしょうか? – xthestreams
問題は、686,950エントリのカラムを置き換える必要があることです。銀行との時間のエントリーの数は80であり、それに伴う変換されたスコアも80の値を持っています。 –
あなたがVBAの使用を主張する場合、1つのコメントはReplaceRngではなくInputRngをループすることを検討するようにします。現時点では、686950 * 80の操作を行っています。あなたがInputRngをループした場合、ReplaceRngの各セルとセルを比較し、値を置き換えた後に内部ループを終了すると、おそらく時間が半分になります(つまり、40個のセルの後に平均してその数が見つかります)。よりスマートな検索(バイナリ検索など)を使用した場合は、6×686950の操作まで減らすことができます。 – xthestreams