excel vlookup有多个结果

Jos*_*rvo 13 excel excel-formula

我试图使用vlookup或类似的功能来搜索工作表,匹配帐号,然后返回指定的值.我的问题是有重复的帐号,我希望结果将结果连接成一个字符串.

Acct No   CropType
-------   ---------
0001      Grain
0001      OilSeed
0001      Hay
0002      Grain  
Run Code Online (Sandbox Code Playgroud)

在第一个工作表中,在第二个工作表上我有Acct No和其他信息,我需要将所有匹配结果放到第二个工作表上的一列中,即."粮食油籽干草"

aev*_*nko 8

这是一个可以为您完成的功能.它与Vlookup略有不同,你只会给它搜索列,而不是整个范围,然后作为第三个参数,你会告诉它剩下多少列(负数)或右(正)以获得你的回报价值.

我还添加了使用分隔符的选项,在您的情况下,您将使用"".这是函数调用,假设第一行的Acct No.是A,结果是B行:

=vlookupall("0001", A:A, 1, " ")
Run Code Online (Sandbox Code Playgroud)

这是功能:

Function VLookupAll(ByVal lookup_value As String, _
                    ByVal lookup_column As range, _
                    ByVal return_value_column As Long, _
                    Optional seperator As String = ", ") As String

Dim i As Long
Dim result As String

For i = 1 To lookup_column.Rows.count
    If Len(lookup_column(i, 1).text) <> 0 Then
        If lookup_column(i, 1).text = lookup_value Then
            result = result & (lookup_column(i).offset(0, return_value_column).text & seperator)
        End If
    End If
Next

If Len(result) <> 0 Then
    result = Left(result, Len(result) - Len(seperator))
End If

VLookupAll = result

End Function
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 如果您不输入结果,我会将","设为结果的默认分隔符.
  • 如果有一个或多个命中,我在末尾添加了一些检查以确保字符串不会以额外的分隔符结束.
  • 我使用A:A作为范围,因为我不知道你的范围,但显然如果输入实际范围它会更快.