2013-07-12 179 views
0

我已经成功使用INDEX和MATCH,但是我遇到了问题。索引/匹配返回多个值

例如,如果数据是:

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

我希望得到所有green apple S IN walmart出售,并得到各量,例如:5,23,5。

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

编辑另外的例子(不加OP)的评论:

SO1762question example

+0

使用枢轴表 –

+0

以下是我希望能为你们提供更多参考信息的图片http://uploadpie.com/fpJCJ –

+0

你是否试图获得一天的时间,无论哪一天与那些相关?你的例子看起来不一致。 – pnuts

回答

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 

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

  • 要匹配的值,
  • ,你要匹配值的列,
  • 要返回,如果有一个值的列比赛。

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

该代码可以被粘贴到一个标准模块(其可通过在带的Developer选项卡选择​​3210,然后选择Insert插入 - ?从菜单栏>Module