• ベストアンサー

Excelのシート間の参照

Excelでシート間のセルの参照をしたいのですが、どのシートを参照するのかを すぐに変えることのできるようにしたいのです。 具体的には、A、B、Cという名前のシートがあり、シートDにおいて A1セルにA、B、Cいずれかの文字を入力すると、その下のセルの参照先が シートAのB1セルになるようにしたいのです。 とりあえず色々式を入れてみたのですが、すべて拒否されてしまいました。 たとえば ='A1'!B1 ='"A1"'!B1 とかです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 INDIRECT関数を使用します。 =INDIRECT("'"&A1&"'!B1") です。 これで、A1に「A」と入力すれば、AシートのB1を、「B」と入力すれば、BシートのB1を表示します。

moby2002
質問者

補足

ありがとうございます。 さらに、参照セルも他のセルから指定したいので =INDIRECT("'"&B1&"'!"&(INDIRECT("D"&B4))) としたのですが、うまくいきません。 どうしてでしょうか?

その他の回答 (2)

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.3

INDIRECTってややこしいですよね 一度INDIRECTを 外した計算式を別のセルに作って その値を表示して そのセルをINDIRECTしたほうがいいと思います (あとで デバッグするときも分かりやすいし)

moby2002
質問者

お礼

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

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

No.1です。 >=INDIRECT("'"&B1&"'!"&(INDIRECT("D"&B4))) INDIRECT関数の使い方を理解されていないようですね。 INDIRECT関数は、引数にセル参照を表す文字列があった場合に、実際にその参照先を表示するというものです。 つまり、AシートのB1を参照する場合は、 「"'A'!B1"」 という文字列を引数に指定するわけです。 そして、この中で、他のセルに記述してある文字列を使用する場合は、文字列として「&」で連結して作ります。 B1にシート名(Aなど)、B4に行番号(1など)を入力する場合は、 INDIRECTの引数に指定する文字列は、 「"'"」 「B1」 「"'!D"」 「B4」 を連結することになります。 したがって、 =INDIRECT("'"&B1&"'!D"&B4) となります。 これで、B1に「A」、B4に「1」と入力すれば、 INDIRECT関数の引数は、 「"'A'!D1"」 となり、つまり、シートAのD1を表示します。

moby2002
質問者

お礼

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

関連するQ&A