那样会慢一倍哦,现在程序匹配到一个就结束,如果现在有4802个关键字,平均一条数据匹配2401次,如果每个都匹配4802次,去找有多少个满足的,程序会变慢。
修改后的程序代码,如果不怕慢,请使用:
Option?ExplicitSub?匹配关键字()
Dim?db,?arr,?i,?j,?k,?n,?st?As?Worksheet
Set?db?=?CreateObject("Scripting.Dictionary")
Set?st?=?ThisWorkbook.Sheets("关键字")
arr?=?st.Cells(7,?8).CurrentRegion
For?i?=?2?To?UBound(arr)
For?j?=?2?To?UBound(arr,?2)
k?=?Trim(arr(i,?j))
If?k?<>?""?Then
db(k)?=?arr(i,?1)
End?If
Next?j
Next?i
Set?st?=?ActiveSheet
arr?=?st.Cells(1,?1).CurrentRegion
n?=?UBound(arr)
ReDim?rlt(2?To?n,?1?To?1)
For?i?=?2?To?n
For?Each?k?In?db.Keys
If?InStr(arr(i,?7),?k)?>?0?Then?rlt(i,?1)?=?rlt(i,?1)?&?db(k)?&?"?"
Next?k
Next?i
st.Cells(2,?6).Resize(n?-?1,?1)?=?rlt
MsgBox?"匹配完毕。"
End?Sub