これはあなたが質問した質問に対する回答ではありませんが、質問する必要はありません。
あなたは、rng
内、Search
として渡された値を見つけようとし、その後、とColumn
によって相殺いくつかによって得られた値を返している場合は、上にあるものワークシートrng
知る必要はありません。
Excelの式(おそらく細胞シート4 D6で!):
=RelativeSearch("b",Sheet1!A1:A6,3,2)
コード範囲A1検索します:値のシート1におけるA6「b」を、次いで3行未満であるセルから値を返すと2列右:
Function RelativeSearch(Search, rng As Range, Row, Column)
Dim r As Range
Set r = rng.Find(What:=Search, LookIn:=xlValues, LookAt:=xlWhole)
If r Is Nothing Then
RelativeSearch = CVErr(xlErrNA)
Else
RelativeSearch = r.Offset(Row, Column).Value
End If
End Function
(あなたはそれが
VLOOKUP
の構文と一致するようにしたい場合は、
r.Offset(Row, Column)
ではなく
r.Offset(Row - 1, Column - 1)
を使用する必要があります。)
を質問がある...なぜあなたはどのようなシートである知っておく必要があります言及されている?よく書かれたUDFがその情報を知る必要がある本当の理由を考えることはできません - あなたは 'Range'オブジェクトとして' rng'を使うことができなければなりません。存在する。 – YowE3K
@ YowE3Kどのシートを見るべきかを知るために必要です。 UDFは、検索針、検索範囲、列と行のオフセットを要求します。私は範囲内の針を見つけ、列をオフセットして範囲を操作します。だから基本的には、それが一致する場所からシート内で上下左右に動くことができるので、少し柔軟性のある "vlookup"です。アドレスをオフセットすることは問題ではありませんが、シートは、シート5と一致したことを意味するアドレスとシート1からの戻り値で運ばれないためです。 – Andreas
私はまだここで答えを見る時間がなかった、明日それを行うだろうが、両方が正しいように見える。あなたがた両方に感謝します。 – Andreas