是否可以將.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