在Excel中,Vlookup函数广泛用于从另一个工作表或工作簿中查找并返回匹配值。通常情况下,Vlookup函数只返回匹配列中第一个匹配项的值。然而,有时我们需要找到所有匹配的值,并将其作为一个列表返回。
一、使用数组公式
您可以使用数组公式vlookup来返回多个结果。下面是一个简单的例子。
= IFERROR(INDEX($C$2:$C$12, SMALL(IF($B$16=$B$2:$B$12, ROW($B$2:$B$12)-ROW($B$2)+1), ROW(1:1))), "")
在此公式中,C2:C12是要返回的值列表,B2:B12是要搜索的列,$B$16是要查找的关键值。这个公式将返回一个数组{ Milk, Bread, Eggs }。
要使用此公式,请记得按Ctrl + Shift + Enter键来确定公式。
二、使用Filter函数
如果您不想使用数组公式,可以使用Filter函数来筛选匹配的值。下面是一个例子:
=FILTER(A2:C12, B2:B12=$B$16)
这个公式将返回一个表格,其中列A到C包含搜索值的所有匹配项(如果B列与$B$16匹配)。您可以使用管理员结果来执行其他操作,例如将其作为一个列表输出或计算某些值。
三、使用宏函数
如果您正在使用VBA,您可以编写一个宏函数来实现返回多个值的功能。下面是一个例子(请在VBE中创建一个新的模块并将其复制到其中):
Function MultiVLookup(lookup_value As Variant, table_array As Range, col_index As Long)
Dim result() As String
Dim count As Long
For Each cell In table_array
If cell = lookup_value Then
count = count + 1
ReDim Preserve result(1 To count) As String
result(count) = cell.Offset(0, col_index - 1)
End If
Next cell
MultiVLookup = result
End Function
在此函数中,lookup_value是要查找的值,table_array是要搜索的区域,col_index是要返回的列的索引。该函数将返回搜索结果的数组。
四、使用Power Query
Power Query是Excel的附加组件,它可以帮助您通过从各种来源提取、转换和加载数据来自动化数据收集的过程。使用Power Query,您可以轻松地从多个表中筛选、组合和汇总数据,以生成您需要的结果。
以下是使用Power Query返回多个Vlookup结果的一些步骤:
- 使用Power Query从扫描的Excel表中创建新查询。
- 在Power Query编辑器中,转到“视图”选项卡,并从“查询设置”下拉列表中选择“高级编辑器”。
- 在高级编辑器中,输入以下函数:
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], LookupValue = "Product 1", MatchedRows = Table.SelectRows(Source, each [Product] = LookupValue), Result = MatchedRows in Result
请注意,此函数假定查找值为“Product 1”,您应该将其替换为您要查找的关键值。此外,此函数还假定匹配列名为“Product”。
完成后,请单击“关闭并应用”以保存更改并应用函数。结果将向您显示与搜索值匹配的所有行。
五、总结
总的来说,有多种方法可以使用Excel返回多个Vlookup结果,包括使用数组公式、Filter函数、宏函数和Power Query。具体哪种方法更适合您取决于您的特定需求和技能水平。