私はより複雑なスプレッドシートを持っていますが、単純なスプレッドシートで何をしようとしているのかを説明します。
2 つの列があり、最初の列には名があり、2 番目の列には姓があります。
例えば:
Column1
Michael;
Michael;
Michael;
George;
Michael;
Henry;
Column 2
Keaton;
Douglas;
Jackson;
Washington;
Jordan;
Ford;
"Michael" に一致するすべての行を列 1 で検索し、それらの "Michael" の名に関連付けられているすべての姓を返す Excel 数式または vba 関数を作成したいと思います。できれば、間にスペースを入れて姓を連結します。Excel の Vlookup、Index、Match、および Array 関数は、最初の "Michael" 姓のみを返すため、機能しません。以下の VBA 関数をテストしましたが、動作しているように見えますが、この関数に関するフィードバックや、動作する数式に関する提案をお待ちしております。
したがって、上記の列に対する関数の出力は次のようになります。
「(キートン)(ダグラス)(ジャクソン)(ジョーダン)」
どんな助けや提案も大歓迎です。
VBA コード。
SourceArray は First Names、ID は「Michael」、TargetArray は Last Names です。
Public Function DrawID(arrInput As Variant, ID As String, arrOutput As Variant)
Dim ArraySize As Integer
Dim i As Integer
ArraySize = Application.WorksheetFunction.CountA(arrInput)
i = 1
Do While i <= ArraySize
If arrInput(i) = ID Then
DrawID = DrawID & " (" & arrOutput(i) & ")"
End If
i = i + 1
Loop
End Function