2017-01-30 13 views
0

Excelの列で複数のテキスト文字列を検索する必要があります(一度に1文字ずつ)。この列の値は約200Kです。したがって、この列を50回検索すると、VBAの「検索」コマンドを使用するのに時間がかかります。変数内のテキスト文字列を検索する

私はこの検索をより効率的にするための代替方法を探しています。おそらく、この列を変数で一度読み取ってから、この変数で検索したいテキスト文字列を探します。この方法では、Excelシートの列自体を検索するよりも検索が高速になることを願っています。

これを達成する最適な方法をお勧めします。

ご協力いただきまして誠にありがとうございます。

+1

最初に値を配列に読み込んでいませんか?いくつかのコードを投稿してください。 – User632716

+1

これまでのコードは何ですか? –

+0

"Find"関数を使用して、Excelシート内の文字列を検索しています。数千の異なる文字列のために何千ものセルを検索すると、これは少し遅いです。このため、私はすべての列をロードして効率的な検索を実行できる変数を使用したかったのです。私は 'INSTR'関数を使用しており、それは時代に顕著な違いをもたらしました。 – Masood

答えて

0

ここから始めて小さいものがあります。 Excelファイルを開き、範囲E10:E34に値を書き込んでください。値の1つがPlotであることを確認してください。それはあなたの価値が発見されるべきでE10:E34範囲の行を与える

Option Explicit 

Sub TestMe() 

    Dim varArray  As Variant 
    Dim strToSearch  As String: strToSearch = "Plot" 
    Dim varVal   As Variant 
    Dim lngCounter  As Long : lngCounter 

    varArray = Range("E10:E34") 

    For Each varVal In varArray 
     If varVal = strToSearch Then 
      Debug.Print varVal 
      Debug.Print lngCounter 
      Exit For 
     End If 
    Next varVal 
    lngCounter = lngCounter + 1 
End Sub 

: は、その後のコードを実行します。

コードは完成していません。次のことを考える必要があります。

  1. 値が2回以上あるとどうなりますか。
  2. 複数の列を持つ配列が必要な場合はどうなりますか。
  3. 範囲が柔軟でなければならない場合はどうなりますか。
  4. セル内の値の開始を知っていても、それでも必要な場合はどうなりますか?値はPlotであり、セルにはPlotnikがあり、何とかそれを取得したいと考えています。
  5. 他にもあります。
+0

ありがとうございました。私はこの方法を試して、それはうまく動作します。しかし、私は現在、より効率的なINSTR関数を使用しています。 – Masood

関連する問題