VBA - 在字符串中搜索数组中的所有值

时间:2016-06-16 14:24:32

标签: arrays excel vba

这里只是一个效率问题。我基本上循环遍历列中的单元格以查看它们是否包含特定字符串,但该单元格还需要不包含14个不同字符串中的任何一个。我目前的解决方案是找到字符串,然后使用单元格上的instr遍历数组。但是,当宏运行时,这可能会发生数百次。我很好奇是否有更好的方法。

例如:

NotArr = Array("blah1", "blah2", "blah3", "etc")

For r = 1 to 10
    'Let's assume I've already found the first string
    For i = 1 to 4
        If Not InStr(Cells(r, 1).value, NotArr(i)) > 0 Then
            'Do things
        End If
    Next i
Next r

注意:我知道我可能会过度思考或者只是错过了明显的东西。我已经在VBA中被埋葬了大约6个星期@ 10小时,并且可以感觉到我的大脑正在融化。

全部谢谢!

1 个答案:

答案 0 :(得分:1)

为什么不首先尝试将数据存储在数组中,而不是循环遍历单元格,这需要VBA与Excel范围交互数百次?这应该会大大加快速度。

Dim arr() as Variant
arr = Range("A1:G10")
For each rng in arr
    For i = 1 to 4
        If Not InStr(rng.value, NotArr(i)) > 0 Then
            'Do things
        End If
    Next i
Next