2016-03-31 13 views

答えて

0

ユーザ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になります。

関連する問題