2013-07-12 228 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