这里只是一个效率问题。我基本上循环遍历列中的单元格以查看它们是否包含特定字符串,但该单元格还需要不包含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小时,并且可以感觉到我的大脑正在融化。
全部谢谢!
答案 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