データ:私は予想のExcel VBAカラムB(コマ分離)、カラムに基づくExcelで
1 Mary
1 John
1 Sam
2 Alaina
2 Edward
結果は次の通りであった:
1 Mary, John, Sam
2 Alaina, Edward
データ:私は予想のExcel VBAカラムB(コマ分離)、カラムに基づくExcelで
1 Mary
1 John
1 Sam
2 Alaina
2 Edward
結果は次の通りであった:
1 Mary, John, Sam
2 Alaina, Edward
ユーザallquixoticは非常に似に答え質問。ソースhere
は、これは彼のVBAのアプローチです:
Option Explicit
Function allquixotic(param As Variant, search As Range, values As Range, Optional absolute As Boolean = False) As String
Dim sep As String, retval As String
Dim i As Integer, rownum As Integer
Dim look As Range, j As Range
sep = ", "
retval = ""
For i = 1 To search.Rows.Count
Set look = search.Cells(i, 1)
If absolute Then
rownum = look.Row
Else
rownum = i
End If
If look.Value = param Then
If absolute Then
Set j = values.Worksheet.Cells(rownum, values.Column)
Else
Set j = values.Cells(i, 1)
End If
retval = IIf(retval = "", retval & j.Value, retval & sep & j.Value)
End If
Next
allquixotic = retval
End Function
Use the worksheet function (feel free to rename it) by using a formula like
=allquixotic(A1,$A$1:$A$15,$B$1:$B$15,true)
Use the fill handle to put the formula in all the cells
パラメータは、以下の通りである:
=allquixotic(look_cell, key_range, value_range, absolute)
look_cell:
最初のパラメータ、単一セルまたは値である必要がありますリテラル。有効な入力には、3、$ 6.25、 "Hello"などが含まれます。これはkey_rangeで検索しようとしている値です。
key_range:
これは、の範囲の細胞(複数の細胞)である必要があります。 absolute
が真の場合、の連続したの範囲(すべての値が連続した行にある)でない限り、非常に奇妙な結果が得られます。
value_range:
これは、の範囲の細胞(複数の細胞)である必要があります。 absolute
が真の場合、の連続したの範囲(すべての値が連続した行にある)でない限り、非常に奇妙な結果が得られます。
absolute:
trueの場合、我々は上value_range
から値を抽出するために何行を決定するためにkey_range
における各「見つかった」行の(全体のスプレッドシートの行数に対して)絶対行番号を使用します。 falseの場合、相対番号を使用します。たとえば、第3のの行がkey_range
で一致する場合は、第3のの行の値をvalue_range
から抽出します。推奨値はFALSEです。省略するとデフォルト値にすることができます。
注:この機能は、キーと値の範囲は列である場合をサポートしていませんが、それに適合するように、かなり簡単にする必要があります。
また、key_range
またはvalue_range
のいずれかに複数の列を指定すると、最も左の列のみが使用されます。
また、すべてのクレジットはallquixoticになります。