Excel/VBA

INDIRECT関数で動的に別シートを参照する

INDIRECT関数

以下が完成系ですが、『目次シートのD3セル』に注目してください。今回の例では、目次シートからVLOOKUP関数で別シートを参照して値を表示しています。

INDIRECT関数を使わない場合以下のように記載するところ
=VLOOKUP($D$2,キャベツ!$B$3:$C$5,2,0)

INDIRECT関数を使うと以下のように書くことができます。
=VLOOKUP($D$2,INDIRECT("'"&C3&"'!$B$3:$c$5"),2,0)

これでいちいちVLOOKUP関数の中にシート名を記載する必要がなくなり、簡単にコピーして利用する事ができるようになります。

もう一つポイントは、シート名をシングルクォーテーションで囲んでいる点です。(上記例では「C3」セルを囲んでいますね)今回の例では、シート名に特殊な文字を使っていないので、これを省略しても動作に影響ありませんが、これを省略してしまうとシート名に「)」などが含まれている場合正常に動作しなくなります。

目次シート
きゅうり、キャベツシートは以下の通り

動的にHYPERLINKを作成したい場合はこちら

スポンサーリンク
コピペで使う