分享EXCEL中Vlookup函数与VBA 实现一对多数据查找

Vlookup函数与VBA 的一对多查找

简述:在Excel表格中,经常用到Vlookup函数进行数据的查找,但是常规情况下,一个查找对象只能匹配一个查找值。本期分享如何通过Vlookup函数实现一对多的查找,及一个查找对象匹配多个查找值(如上图所示,查找对象“aa”),并将查找值显示在同一单元格。如上图所示。

  1. 建立辅助列:首先选中G8单元格,在单元格内输入公式:=F8 & "、" & IFERROR(VLOOKUP(E8,E9:$G$1000,3,0),"") ,输入完公式后再下拉填充。

1.1辅助列的作用是通过改变查找区域来将所有满足条件的值查找出来。一般情况下我们查找“aa”,在查找区域E:F中只会查找到“213”,但是我们改变查找区域,例如我们查找E8时,查找区域是 E9:$G$1000,查找的值就是“56”。然后再通过连接符号将所有查找值连接起来并用“、”号分割。

1.2 在M20单元格输入公式:=LEFT(VLOOKUP(L20,$E:$G,3,0),LEN(VLOOKUP(L20,$E:$G,3,0))-1),再次利用VLOOKUP函数查找“aa”。利用LEFT函数重新获取字符串,利用LEN函数确定字符串的长度。LEN(VLOOKUP(L20,$E:$G,3,0))-1为去掉字符串末尾“、”的长度。

  1. VBA的方式来实现数据查找:

2.1 通过两个FOR 循环实现数据的查找,查询代码为:

Private Sub CommandButton1_Click()

Sheet1.Range("m10:m12") = ""

For k = 10 To 12

For i = 8 To 100

If Cells(i, 5) = Cells(k, 12) Then

If Cells(k, 13) = "" Then

Cells(k, 13) = Cells(i, 6)

Else:

Cells(k, 13) = Cells(k, 13) & "、" & Cells(i, 6)

End If

End If

Next

Next

End Sub

以上就是通过VBA 和函数公式都来实现一对多的查找,当然个人更喜欢用VBA,因为不需要添加辅助列,而且逻辑更简单易懂。

由于时间限制,本期分享就到这里。如有疑问可在评论区留言,小编看到后会及时回复。

举报
评论 0