2017-01-30 55 views
0

我必須在Excel列中搜索多個文本字符串(一次一個字符串)。該專欄已經獲得了大約20萬的值。因此,如果我搜索該列50次,則需要很長時間才能在VBA中使用「查找」命令。搜索變量中的文本字符串

我正在尋找一種替代方法來使此搜索更高效。大概是,在變量中讀一次這個列,然後在這個變量中搜索我想要的文本字符串。使用這種方法,我希望搜索速度比在Excel表格列中搜索更快。

請建議最佳選擇來完成它。

任何幫助,高度讚賞。

+1

您是第一次將值讀入數組中嗎?張貼一些代碼。 – User632716

+1

到目前爲止你的代碼是什麼? –

+0

我只是使用「查找」功能在Excel工作表中搜索一個字符串。當您搜索數以千計的不同字符串的單元格時,這會有點慢。這就是爲什麼我想使用一個變量來加載所有的列,並在其中進行有效的搜索。我已經使用'INSTR'功能,並且與時代有顯着不同。 – Masood

回答

0

下面是一些小開頭: 打開Excel文件並在範圍E10:E34中寫入一些值。確保其中一個值是Plot。 然後運行該代碼:

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 

它會給你的E10:E34範圍,對其中的價值是可以找到的行。

代碼未完成。您必須考慮以下內容:

  1. 如果我們的值超過一次,會發生什麼情況;
  2. 如果我們想要多列數組,會發生什麼?
  3. 如果範圍應該靈活,會發生什麼?
  4. 如果我們剛剛知道單元格中的值的開始,但我們仍然需要它,例如值是Plot,並在我們有Plotnik的單元格中,我們想以某種方式得到它。
  5. 別的。
+0

謝謝Vityata。我試過這種方法,它工作正常。但是,我目前使用的INSTR功能對我的要求更加高效。 – Masood