プロが教える店舗&オフィスのセキュリティ対策術

複数シート(範囲)を指定できるVLOOKUP関数をユーザー定義で作りたいと思ってます。下記のコードではうまく動かないので教えてください。

Function VLOOKUPM(検索値 As Variant, 対象シート As String, 対象セル As Range, 列番号 As Integer) As Variant

Dim i As Integer
Dim r As Range
Dim sh As Variant

Application.Volatile

sh = Split(対象シート, ",")

For i = 0 To UBound(sh)
Set r = Sheets(sh(i)).Range(対象セル)

If 検索値 = r Then
VLOOKUPM = r.Offset(0, 列番号)
Exit Function

End If
Next

End Function

A 回答 (1件)

Function VLOOKUPM(検索値 As Variant, 対象シート As String, 対象セル As Range, 列番号 As Integer) As Variant


Dim i As Integer
Dim r As Range
Dim sh As Variant
Application.Volatile
sh = Split(対象シート, ",")
For i = 0 To UBound(sh)
Set r = Sheets(sh(i)).Range(対象セル.Address)
If WorksheetFunction.CountIf(r.Resize(, 1), 検索値) > 0 Then
VLOOKUPM = WorksheetFunction.VLookup(検索値, r, 列番号, False)
Exit Function
End If
Next
End Function

セルには以下の様にいれます。
(カンマの混ざったシート名だと出来ませんがいいのでしょうか?)

=VLOOKUPM(A1,"Sheet1,Sheet2",B1:C10,2)
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2009/12/14 23:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!