| 
    
     |  | ▼ichinose さん: 
 回答ありがとうございます。頂いたリストで動きました。
 登録したデータテーブルを呼び出すのに Names("table01").RefersToRangeとすれば良いのですね。当方ヘルプファイル自体の文法にまだ慣れていなく、皆さんの質問−回答を参考に作成しているので基本がなっていませんね。以後、努力していきます。
 
 >でも、セルを塗りつぶした色を変えても関数は反応しませんが
 >よいのですよね?
 取込んでいるCELL_00の数値が変化し、それに伴い再計算されるので構いません。
 
 参考にして正式Function作成しました。IF条件が不足していたのでANDで追加、検索型について、区分帯で検索しているので FalseからTrueに変えました。
 下に示すそれで無事に計算が進められました。
 
 Function R_SIZE_V(CELL_00 As Range, CELL_H As Range, _
 CELL_V As Range) As Variant
 Dim R_SIZE00 As Variant
 If (CELL_00.Interior.ColorIndex = 3 And CELL_00 <> CELL_H _
 And CELL_00 <> CELL_V) Then
 R_SIZE00 = Application.WorksheetFunction.VLookup(CELL_00, _
 Names("ユニット").RefersToRange, 7, True)
 R_SIZE_V = "(" + R_SIZE00 + ")"
 Else: R_SIZE_V = ""
 End If
 End Function
 
 >
 >>配列の考え方が間違っており1セルには複数のデータを保管できないことがわかりました。そこでデータではなくセルの色等を条件にすればと思い以下のマクロを作成しました。
 >>A1に数値を入力、D4:F8をtable01と登録し、B1に =Test_VLook(A1)を入力しましたが、#VALUE!のエラーが出てしまいます。どのように修正すればよいのでしょうか。
 >セル範囲D4:F8を名前の登録でtable01という名前を付けたということですか?
 >
 >
 >>実際には =Test_VLook()の入るセルは多数あります。また出来るだけ別シート等は作成したくないのでこのような方法を考えました。
 >>回答宜しくお願いします。
 >>
 >Function Test_VLook(CELL_A1 As range) as variant
 >
 >>  If CELL_A1.Interior.ColorIndex = 3 Then
 >    Test_VLook = Application.WorksheetFunction _
 >        .VLookup(CELL_A1, Names("table01").RefersToRange, 2,false)
 >>  ElseIf CELL_A1.Interior.ColorIndex = 5 Then
 >    Test_VLook = Application.WorksheetFunction _
 >        .VLookup(CELL_A1, Names("table01").RefersToRange, 3,false)
 >>  Else: Test_VLook = ""
 >>  End If
 >>End Function
 >
 >でよいと思いますが・・・。
 >
 >でも、セルを塗りつぶした色を変えても関数は反応しませんが
 >よいのですよね?
 
 |  |