|
楼主 |
发表于 2015-11-18 21:49
|
显示全部楼层
关键字检索中,模拟百度借助空格将关键字分割成多个词组,用 Filter 函数逐词组比对,完全匹配则显示结果。
- Private Sub Image1_Click() '查询
- Dim key, d As Object, Brr, t, N%
- Set d = CreateObject("Scripting.Dictionary")
- arr = Sheet1.Range("A1").CurrentRegion
- ListView1.ListItems.Clear
- If Trim(keys) = "" Then Exit Sub
- Rem 1、对检索关键字按空格分割,提取不重复词组加入字典中
- key = Split(keys, " ")
- For i = 0 To UBound(key)
- If key(i) <> "" And Not d.Exists(key(i)) Then
- d(key(i)) = ""
- End If
- Next
- Rem 2、对获取的词组逐一与文件编号和标题比对,输出完全匹配的记录
- t = d.keys
- For i = 1 To UBound(arr)
- N = 0
- Brr = Array(arr(i, 1), arr(i, 2), arr(i, 3), arr(i, 4)) '要比对的数组
- For j = 0 To d.Count - 1
- If UBound(Brr) <> UBound(Filter(Brr, t(j), False)) Then N = N + 1 '匹配则记为1,累加
- Next
- If N = d.Count Then '如果每一组关键字都匹配,则输出该记录
- Call ListView_Add(i)
- End If
- Next
- End Sub
- Private Sub txtFind_Change()
- keys = Trim(txtFind.Text)
- End Sub
- Private Sub txtFind_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
- If KeyCode = 13 Or KeyCode = 32 Then Call Image1_Click '按空格键或回车键出结果
- End Sub
复制代码
|
|