索引/匹配以返回多个值

时间:2013-07-12 16:57:19

标签: excel vba formulas

我已成功使用INDEX和MATCH,但我遇到了问题。

例如,如果数据是:

green apple | walmart |  5 
green apple | walmart | 23
red apple   | walmart |  5
orange      | macy's  |  4

我希望在green apple中销售所有walmart个,并获得每个{{1}}的数量,例如:5,23,5。

使用INDEX MATCH时,我只能得到它匹配的第一个。如何获取多个值并将它们连接在一个单元格中?

编辑评论中的更多示例(未由OP添加):

SO17620123 question example

1 个答案:

答案 0 :(得分:0)

我不确定你要找的是单独的工作表公式。这是一个应该做的简短VBA例程。

Function MatchConcat(LookupValue, LookupRange As Range, ValueRange As Range)
    Dim lookArr()
    Dim valArr()
    Dim i As Long
    lookArr = LookupRange
    valArr = ValueRange
    For i = 1 To UBound(lookArr)
        If Len(lookArr(i, 1)) <> 0 Then
            If lookArr(i, 1) = LookupValue Then
                MatchConcat = MatchConcat & ", " & valArr(i, 1)
            End If
        End If
    Next
    MatchConcat = Mid(MatchConcat, 3, Len(MatchConcat) - 1)
End Function

代码是用户定义的函数,可以在工作表中使用。该函数有三个参数:

  • 您要匹配的值
  • 要匹配的值列,以及
  • 如果匹配则要返回的值列。

它返回匹配值的逗号分隔字符串。

可以将代码粘贴到标准模块中(可以通过在功能区的Visual Basic标签中选择Developer来插入,然后选择Insert - &gt; {{1从菜单栏开始。