是否可以将.find
一次用于多个字符串?例如,对多个字符串使用.find VBA
worksheet.find(什么:= “字符串1”, “字符串1”, “STRING3”,等...)
它现在无法正常工作,因为它期待After
参数,但我需要检查表格中是否有一组字符串,以准确确定需要通读的行数(我的宏从工作簿中获取数据并将其张贴到另一个工作簿中)。
我知道我总是可以使用一个巨大的If Or
声明并循环遍历所有的行和列,我只是想用.find
会更清洁。
是否可以将.find
一次用于多个字符串?例如,对多个字符串使用.find VBA
worksheet.find(什么:= “字符串1”, “字符串1”, “STRING3”,等...)
它现在无法正常工作,因为它期待After
参数,但我需要检查表格中是否有一组字符串,以准确确定需要通读的行数(我的宏从工作簿中获取数据并将其张贴到另一个工作簿中)。
我知道我总是可以使用一个巨大的If Or
声明并循环遍历所有的行和列,我只是想用.find
会更清洁。
你不能.find和.find做到这一点是非常低效的,循环使用IF,并且,如果你想避免大的或做:
if instr("st1#st2#st3#...",cells(..,..)) & "#")>0 then
单元格值“保罗”
比赛
MsgBox InStr("Peter#Paul#Ringo#", "Paul" & "#")
不匹配
MsgBox InStr("Peter#Paul#Ringo#", "Pau" & "#")
不匹配
MsgBox InStr("Peter#Paul#Ringo#", "Paul Mc" & "#")
您可以使用双for循环,其中用于环外将迭代虽然所有的细胞内for循环的搜索你看串每个单元,并使用.find功能。它会发现第一次发生,你可以做任何你想做的事情。
组RNG = [范围要搜索](假设这是一个列,可以通过添加另一个for循环调整对于2D阵列代码)的搜索字符串的 串[] =阵列
For i = 1 to rng.cells.count
For j = 0 to strings.count
found = instr(strings[j],rng.cells(i,1)
If found >0 then
'whatever you want to do
Endif
Next j
Next i
这就是我迄今为止所做的,只是要看看是否有更快,更干净的方式来做到这一点。 “if”语句中有大约14个“Or”。 – PointXIV
你想要包含**任何**字符串的第一个单元格,还是想要全套单元格? –
包含任何的第一个单元格。我得到所有数据的Excel表格在不同地方都有值,所以我只需要第一个实例来获取需要从中获取数据的行数。 – PointXIV