私は現在、複数の値を返すためにルックアップ関数を使用しています。 Extend Officeからこの機能を入手しました。 https://www.extendoffice.com/documents/excel/2706-excel-vlookup-return-multiple-values-in-one-cell.htmlルックアップ関数を使用してフィルタリングによる値のリストを返す
私のニーズに応えるためにコードを編集したいところです。複数の値をさらに必要に応じてフィルタリングすることができます。私は現在、Instr Functionを使用して、ユーザが入力したアルファベットで始まる値だけを返します。しかし、結果は '#VALUE!'と表示されるので機能しません。どこが間違っているのか分かりません。
たとえば、シート自体の機能では、 'MYVLOOKUP(C2、Table!A:B、2、 "J")'というキーを使用します。これは、 'J'で始まる値だけを返したいが、#VALUEを返すことを意味する。
Function MYVLOOKUP(pValue As String, pWorkRng As Range, pIndex As Long,
filter As String)
Dim rng As Range
Dim xResult As String
Dim result As Integer
xResult = vbNullString
'the next line trims pWorkRng down to the .UsedRange
Set pWorkRng = Intersect(pWorkRng, pWorkRng.Parent.UsedRange)
For Each rng In pWorkRng
If rng = pValue Then
result = InStr(rng.Value, filter, vbTextCompare)
If result = 1 Then
xResult = xResult & rng.Offset(0, pIndex - 1) & ","
Else
End If
End If
Next
MYVLOOKUP = Trim(xResult)
End Function
* "動作しないことができる" *に詳しく説明し、例のユースケースを示してください。 –
最初に 'If rng = pValue'をチェックし、' filter'で始まっていれば、この二重チェックは意味をなさないでしょう。完全一致を検索するか、何かで始まるものを検索してください。 –
複数の値を返すことはできません。値の範囲が「J」と言うだけで始まります。 –