マクロでのアドバイスはseastar3さんから出ているようですので、私からはExcel関数での実現方法をご紹介します。
まず「ブックを開く」の部分ですが、
=HYPERLINK(ファイルパス)
のような式を記述したセルを用意し、これをクリックすることで実現できると思います。
次に開いたブックからのクロスサーチの部分ですが、以下のように列・行それぞれからMATCH関数で対象セルの位置を見つけて、INDEX関数で値を取得する方法で実現可能です。
例)Catalog.xlsxのSheet1からベンツのSpeedを取得する場合
=INDEX([Catalog.xlsx]Sheet1!B2:Z99,MATCH("Speed",[Catalog.xlsx]Sheet1!A2:A99,0),MATCH("ベンツ",[Catalog.xlsx]Sheet1!B1:Z1,0))
ご覧のとおり、(当然ではありますが)ブック名・シート名が関数内に記述されています。
毎回ファイル名・シート名が異なるようでしたら、ここを毎回変更してあげなければなりません。
上記に加えてINDIRECT関数も利用すれば、関数自体を毎回いじる必要はなくなります。
しかしその分さらに複雑な式になってしまいます。
例)A1セルにブック名、A2セルにシート名、A3セルに車種、A4セルに項目を入力してINDIRECTで参照する場合
=INDEX(INDIRECT("[" & A1 & "]" & A2 & "!B2:Z99"),MATCH(A4,INDIRECT("[" & A1 & "]" & A2 & "!A2:A99"),0),MATCH(A3,INDIRECT("[" & A1 & "]" & A2 & "!B1:Z1"),0))
というわけで結構複雑な式になってしまいますので、自分なら「どうしてもExcel関数で実装したい」という場合でもなければVBAで実装すると思います。
Excel関数でもできないわけではないよ、ということを選択肢の一つとしてご紹介させていただきました。
参考になれば幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。