0

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

例如,如果数据是:

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

我想把所有green apple的 s 都卖掉walmart,并得到每个的数量,例如:5、23、5。

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

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

SO17620123 问题示例

4

1 回答 1

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 BasicDeveloper选项卡中选择,然后从菜单栏中选择Insert->来插入。Module

于 2013-07-12T18:11:48.283 回答