- ベストアンサー
シート名を変数で持つには?
皆さんの知恵をお借りしたいと考えております。 たとえばシート名「sheet1」のA1セルに「リンゴ」とデータが入っているとします。 次にシート名「sheet2」のA1セルに「sheet1」データを入れます。 そしてシート名「sheet3」のA1に「リンゴ」を表示させたいのです。 ”=sheet1!A1”とすれば簡単に表示されるのですが、sheet2のA1に入っている「sheet1」というデータを利用してsheet1のA1セルを参照できないでしょうか? お知恵を貸してください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは~ > 実は正式なシート名に括弧「()」を使用していたのですが、 =INDIRECT("'"&Sheet2!A1&"'!A1") としてみてください。 画面上では見づらいかもしれませんが、'( シングルクォーテーション )を ""で囲っています。 &"!A1" の !の前にもシングルクォーテーションをつけます。 ★ 上の数式をコピー&ペーストしてみてください。 Sheet2 も、実際は ( )を使ったシート名なら、 (例) =INDIRECT("'"&'テスト(2)'!A1&"'!A1") のように、そのシート名もシングルクォーテーションで囲ってください。 コチラで検証した結果、↑の数式でうまくいきました。 理由を訊かれてもわかりませんが‥
その他の回答 (5)
- zenjee
- ベストアンサー率47% (50/106)
>括弧をつけると以前のようにエラー「#REF!」が出ました。括弧に問題があるのでしょうか? そのとおりでしょうね。()はセル内では演算子となりますので、それを文字列として引数に持ってくるとエラーになると思います。 因みにあるセルで(1)と入力すれば「-1」となりますね。 Sheet名に括弧などを付けたいときは、()でなく「」にされたらいかがでしょうか。
お礼
ご返答ありがとうございます。 たとえ全角にしていても、括弧は演算子扱いされてしまうのですね。勉強になりました。 どうも何回もご返事いただきましてありがとうございました。 また何かわからないことがあれば、よろしくお願いいたします。(ド素人なもので・・・(笑))
- zenjee
- ベストアンサー率47% (50/106)
実際にSheet1のシート名を何とつけて、Sheet2のA1に何と入力して、更にSheet3の、INDIRECT関数の引数(括弧内の文字列)がどう入力してあるかが分からないと答えることが出来ません。 私が試した例では、 Sheet1のシート名を仮に「品名表」とします。 Sheet2のA1に「品名表A1」と入力します。 この場合Sheet3の式が =INDIRECT("品名表A1") となっていると「#REF!」となります。(「!」がないからです。) 正しい答を得るためには =INDIRECT("品名表!A1") か、又は =INDIRECT(Sheet2!A1) でなければなりません。なお、「!」は半角「!」でないとダメです。全角で入力した場合は、F9キーを押して半角にします。 もしかしたら「!」が抜けているとか、全角「!」になっているとか、あるいは「品名表」とした場合の「" "」が抜けてませんでしょうか。
お礼
返答ありがとうございます。 いろいろなシート名で試してみた結果、 実は正式なシート名に括弧「()」を使用していたのですが、この括弧をはずすと表示されました。 括弧をつけると以前のようにエラー「#REF!」が出ました。括弧に問題があるのでしょうか?
#1のM-SOFTです。 シート名が間違っていませんか。大文字小文字・全角半角O(オー)と0(ゼロ)など間違いやすいので、よく確認してください。 テストデータでうまくいくのですから式は間違っていないのです。
お礼
どうも、返信ありがとうございます。 シート名ですが、コピー&ペーストして貼り付けてみたりしたのですが、相変わらず「#REF!」のままです。 一度Excelを終了したりしてみたのですが、エラーが出たままになってしまいます。 ふぅ、お手上げ。 おっしゃる通りテストデータではうまくいったので、M-SOFTさんは適切なアドバイスを下さったと考えております。 ありがとうございました。 なぜだぁ~~~!!
- zenjee
- ベストアンサー率47% (50/106)
>「sheet2」のA1セルに「sheet1」データを入れます ちょっとこの意味がよく分かりませんが、「sheet2」のA1セルに入っているのは「Sheet1!A1」という文字列でしょうか。 もしそうであれば、Sheet3のA1に =INDIRECT(Sheet2!A1) と入力すればいいと思いますが……。 Sheet3のA1を選択した状態で、関数ウイザードを開き、INDIRECT関数を選択し、ダイアログボックスの参照文字列のと頃でSheet2似戻り、A1セルを選択、OKするだけです。するとSheet3のA1がリンゴとなります。
お礼
関数ウイザードでINDIRECT関数を開いて作業を行いました。 回答者No.1のM-SOFTさんの所にも書きましたが、テストデータ(質問で出した例)ならばうまくいくのですが、実際のデータでは「#REF!」が出てしまいます。テストデータと実データの差は余りないのですが・・・。 ご解答ありがとうございました。
こんにちは。 INDIRECT関数を使うと出来ますよ。 =INDIRECT(Sheet2!A1&"!A1") でどうでしょうか。
お礼
どうもありがとうございました。 上記例(質問で出した例)ではうまくいくのですが、 実際のデータでは「#REF!」が出てしまいます。 なぜでしょう?(笑) ありがとうございました。
お礼
ご返答ありがとうございます。 できました! 解決しました。 ありがとうございました。 どうもお手数をおかけいたしました。