excel模糊查询
推荐于2016-06-17 · 知道合伙人软件行家
1.首先看一下原始数据,A列是一些公司全名,在B1处输入一个简称或者说关键字(必须是在A列某个文本中连续包含的关键字),要在C1返回A列对应的全称。
2.双击C1单元格,输入公式
=VLOOKUP("*"&B1&"*",A1:A7,1,)
回车后C1单元格就返回了B1对应的A列公司全称。
3.VLOOKUP通配符方法介绍:
=VLOOKUP("*"&B1&"*",A1:A7,1,)代表的含义是在A1:A7的范围内查找包含B1关键字的单元格,找到后返回A1:A7第一列的内容。函数中的“*”代表任意字符,也就是说在A1:A7内查找B1文本前后任意字符的内容,也就是包含B1文本的意思。其中的1代表返回A1:A7数据区域第一列结果,最后一个逗号后省略参数代表的是精确匹配,也可以输入0或FALSE。
4.本例也可以用LOOKUP函数完成。
双击C1单元格,输入公式=LOOKUP(1,0/FIND(B1,A1:A7),A1:A7)即可。
5.来看一下LOOKUP运算过程。
首先FIND(B1,A1:A7)表示在A1:A7内查找B1内容,如果查找不到则返回错误值,如果查到返回在文本中的位置。
6.0/FIND(B1,A1:A7)这部分让上一步返回的值参与运算,如果上一步返回的是数字,结果就返回0否则仍返回错误值。
7.最后LOOKUP(1,0/(数组),A1:A7)部分返回“数组”中最后一个小于等于1(也就是“数组”中的0)的值对应的A1:A7的内容,也就是全称。
表格内容太多怎么办,来学习一下高端的模糊查找吧
找到一个取首字母的函数:
Function HYPY(myStr As String) As String
Dim L As Integer, i As Integer
Dim GetPY As String, N As String
On Error Resume Next
myStr = StrConv(myStr, vbNarrow)
L = Len(myStr)
For i = 1 To L
If Asc(Mid(myStr, i, 1)) > 0 Or Err.Number = 1004 Then N = ""
N = Application.WorksheetFunction.VLookup(Mid(myStr, i, 1), _
[{"吖","A";"八","B";"嚓","C";"咑","D";"鵽","E";"发","F";"猤","G";"铪","H";"夻","J";"咔","K";"垃","L";"呒","M";"旀","N";"噢","O";"妑","P";"七","Q";"囕","R";"仨","S";"他","T";"屲","W";"夕","X";"丫","Y";"帀","Z"}], 2)
GetPY = GetPY & N
Next i
HYPY = GetPY
End Function