Excel的Vlookup函数是最常用的匹配查询函数,但是当源数据区域存在重复值时,一般只能匹配到首次出现的内容(从上至下)。
如何将多个重复值涉及的内容匹配过来?其中一种方式就是用VBA自定义函数,将重复值涉及的内容集中匹配到一个单元格内。
1、进入VBA编码界面
按Alt F11键,打开“Microsoft Visual Basic for Applications窗口”。
右键单击[模块],插入“模块”。
2、录入VBA代码
在VBA编码窗口,录入以下代码。
Function MultipleLookup(Lookupvalue As String, LookupRange As Range, ColumnNumber As Integer)
Dim xDic As New Dictionary
Dim xRows As Long
Dim xStr As String
Dim i As Long
On Error Resume Next
xRows = LookupRange.Rows.Count
For i = 1 To xRows
If LookupRange.Columns(1).Cells(i).Value = Lookupvalue Then
xDic.Add LookupRange.Columns(ColumnNumber).Cells(i).Value, ""
End If
Next
xStr = ""
MultipleLookup = xStr
If xDic.Count > 0 Then
For i = 0 To xDic.Count - 1
xStr = xStr & xDic.keys(i) & ","
Next
MultipleLookup = Left(xStr, Len(xStr) - 1)
End If
End Function
3、引用公式
返回到工作表,在F2单元格输入公式:=MultipleLookup(E2,$B$2:$C$31,2),如涉及多行数据,则将公式复制到其他单元格。
公式说明:E2是查询条件,B2:C31是要使用的数据范围,数字2是包含返回值的列号。
4、例外信息处理
如果在使用公式的过程中出现以下例外信息,则去加载相应的VBAProject。
在VBA编码界面,单击菜单栏[工具]=>[引用]。
在[引用-VBAProject]界面,勾选[Microsoft Scripting Runtime]。
评论 (0)