2016-06-15 7 views
0

特定のキーワードに対してA1:D10000から切り取りデータが必要です。例 "Release Date:\ n"の文字列がある場合は、F列の対応するセルに&のペーストが挿入されます。 任意の文字列がでている場合は、私が意味する、「発売日:\ n」はC21で、それは、私はそれがうまく動作するコード&を持つF21切り取り用VBA特定のキーワードのデータ

で&ペーストをカットされます。しかし問題は、私が予想していたよりも完了するのに巨大な時間が必要なことです。すぐに実行されるような優れたコードですか?

マイコード:

サブMacro87()

For Repeat = 1 To 10000 
Dim found As Range 
Sheets("part15").Select 
Range("A1").Select 
Columns("A:D").EntireColumn.Select 
Set found = Selection.Find(What:="Release Date:\n ", After:=ActiveCell, LookIn:= _ 
    xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext _ 
    , MatchCase:=False, SearchFormat:=False) 

If Not found Is Nothing Then 
found.Select 
ActiveCell.Select 
Selection.Cut 
Range("F" & (ActiveCell.Row)).Select 
ActiveSheet.Paste 
Set found = Nothing 
End If 
Next 

End Sub 
+0

は 'SELECT'の使用を停止するようにしてください、あなたは'例えばfound.cut' 'レンジ( "F" &(ActiveCell.Row))と言うことができます値= found.value'。また、処理中に計算をオフにします。また、instrのような文字列比較関数を使用して、必要な処理を行うこともできます。数式でSEARCH&FINDを使うこともできますので、this = IF(ISERR(SEARCH、 "リリース日\ n"、I1))、 ""、I1)のような数式を追加してから、ループ以外のものを探しているループ –

+0

私はInStrがループするのが速いと思います。 [MSDN](https://msdn.microsoft.com/en-us/library/8460tsh1(v = versus90).aspx) – Liss

答えて

0

Daveが述べたように、多くの速度低下は、コード内の繰り返し選択されたステートメントから生じることになります。 VBAは通常、その中のデータを処理するために範囲を選択する必要はありません。以下は、あなたのために物事をスピードアップするはずです。それは瞬時に私のために動作します:

Sub Macro87() 
    Set Rng = Range("A1:D10000") 
    For Each cel In Rng 
     If InStr(1, cel.Value, "Release Date:\n ") > 0 Then 
      Cells(cel.Row(), 6) = cel.Value 
      cel.Value = Empty 
     End If 
    Next cel 
End Sub 
+0

文字列は、範囲A1:D10000のどこにでも見つかります。私はそれがb12またはc15またはd11にあることを意味します。常にそれはカラムF – Hafigur

+0

@Hafigur Yupに行く必要があります。ちょうどそれを見た。変更を加えました。申し訳ありません。 –

+0

文字列が "リリース日:\ n"だけでなく、 "リリース日:\ n"という文字列の他の重要な事項 "リリース日:\ n"は文字列のキーワードです。 – Hafigur

1

まず、1〜10,000に行く停止 - あなたはそんなにあなたの代わりに.FindNext使用することができたときにアクションを繰り返す必要はありません。第二に、ペストのように.Selectの使用を避けてください。

+0

実行時エラー91この行のループループが見つかりませんNothing And found.Address <> firstAddress – Hafigur

+0

RT91は、オブジェクト変数が設定されていないことを意味します。エラーが発生した場所の上の行に 'Set'文がありませんでしたか? – Dave

+0

私はちょうどあなたのコードをコピーします – Hafigur

関連する問題