快速多列查找匹配关键字
2023-12-15 05:24:59
实例需求:根据第一列专业名称,在“专业分类指导目录”中,针对三个学历层次(研究生、本科生、专科生)分别查找对应专业类别,填写在对应位置,即截图中的黄色区域。
需要注意如下两点:
- “专业分类指导目录”中分隔符不统一,例如下图中红框内的部分,前两个分隔符为半角逗号,后两个分隔符为全角逗号。
- 有些专业名称可能包含在另一个专业名称中,例如:“兽医”是一个单独的专业,同时也出现在“基础兽医学”,“兽医医药”等专业中,在查找时需要精确匹配。
示例代码如下。
Sub Demo()
With Sheet2
arr = .Range(.[d4], .Cells(Rows.Count, 1).End(xlUp))
End With
For i = LBound(arr) To UBound(arr)
For j = 2 To 4
If arr(i, j) <> "" Then arr(i, j) = "," & Replace(Replace(arr(i, j), " ", ""), ",", ",") & ","
Next
Next
Set rngData = Sheet4.[a1].CurrentRegion
rngData.Offset(1, 1).ClearContents
brr = rngData.Value
For r = 2 To UBound(brr)
iCnt = 0
major = "," & brr(r, 1) & ","
For i = LBound(arr) To UBound(arr)
For j = 2 To 4
If InStr(1, arr(i, j), major) > 0 Then
brr(r, j) = arr(i, 1)
iCnt = iCnt + 1
If iCnt = 3 Then Exit For
End If
Next
If iCnt = 3 Then Exit For
Next
Next
rngData.Value = brr
End Sub
【代码解析】
第3行代码需将数据表格“专业分类指导目录”加载到数组中。
第5~9行代码循环遍历每行数据。
第6~8行代码循环每行中的数据。
第7行代码将时两个Replace
函数,清除专业清单中的空格,并将全角逗号替换为半角逗号,并且在字符串的首位附加一个半角逗号,这样可以更容易的实现精确匹配。
第10~13行代码需将需要填写的数据表格加载到数组中。
第11行代码清空需要填写的区域(截图中黄色区域)。
第13~26行代码循环遍历每行数据。
第15行代码构建查找关键字,此处同样在专业名称字符串的首位附加一个半角逗号。
精确匹配的实现原理如下,例如需要查找“兽医”专业,那么实际查找关键字为,兽医,
,在下面两个字符串中,仅能匹配第一个,而不会出现错误匹配。
- ,基础兽医学,兽医,临床兽医学,
- ,基础兽医学,预防兽医学,临床兽医学,
第16~25行代码双层循环在“专业分类指导目录”中查找关键字。
第19行代码提取对应的专业列表
第27行代码将查找结果更新到工作表中。
文章来源:https://blog.csdn.net/taller_2000/article/details/135007494
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!