那樣會慢壹倍哦,現在程序匹配到壹個就結束,如果現在有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