0

INDEX と MATCH はうまく使用できましたが、問題があります。

たとえば、データが次の場合:

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

green appleで販売されたすべての を取得し、それぞれの金額を取得したいと思います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

コードは、ワークシートで使用できるユーザー定義関数です。この関数は次の 3 つの引数を取ります。

  • 一致させたい値、
  • 照合する値の列、および
  • 一致した場合に返す値の列。

一致した値のカンマ区切りの文字列を返します。

コードは標準モジュールに貼り付けることができます (リボンのタブで を選択し、メニュー バーから->を選択Visual Basicして挿入できます。DeveloperInsertModule

于 2013-07-12T18:11:48.283 に答える