質問: エクセル関数indirectについて エクセル関数 セルの参照についての質問です。 ひとつのbookの中に、aとbのシートがあります。 aにデーターを入力し、bに必要な部分だけセルの参照(indirect)関数を使ってデーターを反映させていたのですが、bのシートだけを別のbookとして保存した場合、indirectの関数を使った部分がエラーの表示になってしまいます。(よく考えればaを参照しているので当たり前なのですが。。。) bのシートを別のbookに保存しても参照しているデーターが消えない方法(関数)はあるのでしょうか? ご存知の方がいらっしゃいましたらご教授下さい。 (説明が下手ですみません)
回答: 元のシート(仮にaとする)データと関係の無いセル(例でi1セルとします)に、今は無駄な事ですが、自分のブックのフルパスの文字列を入れて置きます。 自分のブックがあたかも他ブックのような式にして、indirect関数の()内にいれます。 ーー 次にaのシートだけを別のbookとして保存した場合(そのシートをbとして)にx1セルの文字列を1箇所だけ(これがメリット)正しく編集します。 其れで正しい値が出るか見てください。 参考 http://www.excel-jiten.net/formula/ref_other_books.html の最後 ーー ただし 元シートもそれに備えたし式にして置く必要があるとか、 bシートのデータの全セルが式設定になり、望ましいことでない。 bシートで別ブックaシートの素データだけ参照するとか(式は生かす)、 aシートで式を消して値化してしまって、コピー貼付けするとか考えたほうがよかろう。出来るからといって、複雑化するのは、才におぼれる策だ。 ーー 同じフォルダ内の例として、 [01化b.xls]ブックのsheet1で i1に[01化b.xls]sheet1! a2:a4 2 式 =indirect($i$1&"a"&row()) 4 8 これをsheet4などに 式 =indirect($i$1&"a"&row()) などと式複写で作っておく。 sheet4のコピー先のbook1に行って i1には[01化b.xls]sheet1! が入っている a2に =indirect($i$1&"a"&row()-1) 2 以下同じく 4 8 となっているはず。