プロが教えるわが家の防犯対策術!

Sheet1とSheet2があり、
Sheet1のA1には「tset」という値が入っています。

そこで、Sheet2の任意のセルに
Sheet1のA1の値を入れたいのですが
「=Sheet1!A1」なら可能なのに
Sheet2のA1に「Sheet1」と入力し
Sheet2のA2に「=INDIRECT(A1)!A1」とするとエラーになります。

このような場合は、INDIRECT関数を使えばいいと知ったのですが
何が間違っていますか?

「INDIRECT関数 エラーになる」の質問画像

A 回答 (3件)

INDIRECT 関数の仕様では、参考 URL にあるとおり、文字列を引数とします。

「セル参照」あるいは「セル範囲に付けられている名前」を表す文字列(参照文字列)を引数として指定しますが、代わりにセル参照を指定した場合は、参照元の文字列を関数が受け取ってきます。シート名のみを引数とする方法は、ありません。


○ =a1
○ =sheet1!a1

○ =indirect(a1)       …… A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ
○ =indirect("a1")      ……「=a1」と同じ意味
× =indirect(sheet1)     ……エラー「#NAME?」
× =indirect("sheet1")    ……シート名を含む参照文字列が未完成のため、エラー「#REF!」
○ =indirect("sheet1!"&a1)  …… Sheet2 の A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ
○ =indirect("sheet1!"&"a1") ……「=sheet1!a1」と同じ意味
○ =indirect("sheet1!a1")   ……「=sheet1!a1」と同じ意味

○ =a1!a1           …… Excel のサービス機能により「a1」が「'a1'」に自動変換されるため、「a1」という名前のシートが存在する場合のみオッケー
△ =a1&"!"&a1         ……一応エラーにはならないが、期待とは全く異なる結果(結合された文字列)を返す
△ =INDIRECT(A1)&"!"&A1    …… A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ一応エラーにはならないが、期待とは全く異なる結果(結合された文字列)を返す
△ =INDIRECT("A1")&"!"&A1   ……一応エラーにはならないが、期待とは全く異なる結果(結合された文字列)を返す
× =INDIRECT("A1!")&A1    ……シート名を含む参照文字列が未完成のため、エラー「#REF!」
× =INDIRECT(A1)!A1      ……「&」と「"」がないため、数式の入力がそもそも受け付けられない
× =sheet1!indirect("a1")   ……数式の入力がそもそも受け付けられない

○ =indirect(a1&"!"&a1)    …… A1 セルに「a2」などの有効な参照文字列が記入されており、かつ、「a2」などの名前のシートが存在する場合のみ
○ =indirect(b1&"!"&a1)    …… B1 セルに「sheet1」など、A1 セルに「a2」などの有効な参照文字列が記入されている場合のみ
○ =indirect(a1&"!a1")    …… A1 セルに「sheet1」などの有効な参照文字列が記入されている場合のみ

× =indirect(合計)     ……エラー「#NAME?」または「#REF!」
○ =indirect("合計")     ……「合計」という名前が付けられたセルが存在する場合のみ


INDIRECT では、正しいセル参照になる文字列でありさえすれば、自由に文字列をつなげて作ることができます。

●=indirect(c1&d1)
●=indirect("sheet1!"&c1&d1)
●=indirect(a1&b1&"!e1")
●=indirect(a1&"!"&c1)
●=indirect("合計")

参考URL:http://office.microsoft.com/ja-jp/excel-help/HP0 …
    • good
    • 5
この回答へのお礼

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

お礼日時:2013/12/28 19:48

>何が間違っていますか?


INDIRECT関数の引数の記述に誤りがあります。

=INDIRECT("Sheet1!A1") で試してください。

=INDIRECT(A1&"!A1") とすればエラーにならないはずです。
    • good
    • 4
この回答へのお礼

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

お礼日時:2013/12/28 19:48

「=INDIRECT(A1)!A1」


 =INDIRECT(Sheet1)!Sheet1
これじゃエラーになるでしょ。

 INDIRECT(A1&"!A1")
これで解決します。
    • good
    • 2
この回答へのお礼

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

お礼日時:2013/12/28 19:48

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

このQ&Aを見た人はこんなQ&Aも見ています