您的位置:

使用Vlookup返回多个结果

在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结果的一些步骤:

  1. 使用Power Query从扫描的Excel表中创建新查询。
  2. 在Power Query编辑器中,转到“视图”选项卡,并从“查询设置”下拉列表中选择“高级编辑器”。
  3. 在高级编辑器中,输入以下函数:
    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。具体哪种方法更适合您取决于您的特定需求和技能水平。