【Excel VBA】如何处理数据模糊查询与匹配?

您所在的位置:网站首页 vba模糊筛选 【Excel VBA】如何处理数据模糊查询与匹配?

【Excel VBA】如何处理数据模糊查询与匹配?

2023-10-27 07:30| 来源: 网络整理| 查看: 265

'对查找到的单元格通过offset偏移取值

Else

arr(i, 2) = "" '否则返回空文本

End If

Next

With Range("e1:f" & Cells(Rows.Count, 5).End(xlUp).Row)

.NumberFormat = "@"

'设置单元格文本格式,避免文本数值变形

.Value = arr

'将arr放回单元格区域

End With

MsgBox "ok"

End Sub

2,Instr和Like方法:

Sub ArrInstrOrLike()

Dim arr, brr, i&, j&

arr = Range("a1:c" & Cells(Rows.Count, 2).End(xlUp).Row)

'数据源装入数组arr

brr = Range("e1:f" & Cells(Rows.Count, 5).End(xlUp).Row)

'查询区域装入数组brr

For i = 2 To UBound(brr)

'遍历查询区域

brr(i, 2) = ""

'清空原结果

For j = 1 To UBound(arr)

If InStr(1, arr(j, 2), brr(i, 1), vbTextCompare) Then

'Instr函数,vbTextCompare不区分字母大小写,上期我们讲过了,此外也可以使用like语句(like语句区分字母大小写):

'If arr(j, 2) Like "*" & brr(i, 1) & "*" Then

brr(i, 2) = arr(j, 3)

Exit For '找到结果后,退出遍历arr

End If

Next

Next

With Range("e1:f" & Cells(Rows.Count, 5).End(xlUp).Row)

.NumberFormat = "@" '文本格式,防止文本数值变形

.Value = brr '将arr放回单元格区域

End With

MsgBox "ok"

End Sub

小贴士:

1,Instr函数的语法和用法,上期我们讲过了。链接:VBA常用小代码101:批量改变单元格部分字符格式。

2,LIKE语句区分字母大小写,例如:MsgBox "MyToToOFFICE" Like "*Office*",结果为False。

3,Find方法常用于单元格对象,Instr和Like则常用于字符串计算。前者的优势是可以不指定查询值在查询范围中的具体列数,而是直接使用单元格区域甚至工作表作为查询区域,例如此例中的Set Rng = Range("b1:c" & Cells(Rows.Count, 2).End(xlUp).Row)。后两者虽然需要指定查询条件列……但它们更容易处理多条件模糊匹配查询的问题。例如将查询条件修改成班级为Office,姓名为星光的考试成绩,使用Instr或Like语句要明显比Find更为简单。比如:

If arr(j, 1) & arr(j, 2) Like "*Office*星光*" Then

4,应用于Range对象的Find方法,在区域中查找特定信息,并返回 Range对象,该对象代表用于查找信息的第一个单元格。如果未发现匹配单元格,就返回 Nothing。该方法不影响选定区域或活动单元格。其语法如下:

expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SerchFormat)

该方法参数众多,但常用的不过是What(找谁?)和LookAt(xlWhole精确查询或 xlPar模糊查询),该方法具体可以参考Office帮助文件~

图文作者:看见星光返回搜狐,查看更多



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3