こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの関数で、セルに書いたファイル名を参照

エクセルの関数で、セルに書いたファイル名を参照する方法が知りたいです。

エクセル関数初心者レベルです。
別のファイル(開いた状態)に欲しいデータがあって、そのデータをexcel関数(できればOFFSET関数等)を使って他のファイルで参照します。
その際、その関数に記載されるファイル名を別のセルに記入して、それを参照させるようにしたいのですが、どうすればよいのでしょう。

たとえば、afile.xlsというファイルのbsheetというシートのA1セルに欲しいデータ(数字または文字)があるとします。
afile.xlsを開いた状態で、別のファイル(new.xlsとします)のセルに、"="で参照させると
=[afile.xls]bsheet!$A$1
という関数が入り、データも表示されています。

ここで、たとえばnew.xls上の B2セルに " afile.xls " とベタ打ちして、
上掲の=[afile.xls]bsheet!$A$1の [afile.xls] のところをB2セルを参照させるようにしたいです。単純にB2と打ち変えてみたりもしたのですが、うまくいかないようで。

どなたか教えて頂けるとたすかります。よろしくお願いいたします。

投稿日時 - 2011-02-20 18:59:27

QNo.6537774

困ってます

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

(1))http://www.excel-jiten.net/formula/ref_other_books.html
の最後のほうの他ブックセル参照をまず勉強すること。
(2)次にその文字列を、セルに在るブック名文字列やシート文字列および特殊記号を&で連結して正しい文字列を作ってください。そのセルをB1セルと仮定すると
(3)=INDIRECT(B1)として正しい値が取れて居るか確認する
(4)=INDIRECT() のカッコ内にB1の式を入れて完成形にする(B1の式の先頭の=は不要だが)
相当エクセル関数のベテランになるまでは、(2)-(4)のステップはやったほうが良い。

投稿日時 - 2011-02-20 21:15:54

お礼

ご親切にありがとうございます。
こういう方法があるのかと大変勉強になりました。
おっしゃるとおり、一歩ずつ進めようと思いました。
ありがとうございました。

投稿日時 - 2011-02-20 22:27:34

ANo.4

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

直接参照:
=[afile.xls]bsheet!$A$1

間接的に参照:
=INDIRECT("["&B2&"]bsheet!A1")

間接的に参照しながら関数で処理する:
目的のシートのA3セルを
=INDEX(INDIRECT("["&B2&"]bsheet!A1:A10"),3)

ただしafile.xlsは必ず「開かれていなければなりません」。

閉じたブックに対してこの方法は使えませんので,実際には閉じたまま作業したかった時は
○必要なブックを網羅して参照する式を裏シートにでもずらり並べておき,その範囲を可変で参照する式を作成する
○マクロを使う
などの方法になります。

投稿日時 - 2011-02-20 19:18:29

お礼

非常にわかりやすい回答をありがとうございます。
「OFFSET関数等」と書いたところにもちゃんと回答してくださったんですね。
感激しました。
INDEX関数というものの存在がわかって大変勉強になりました。
じっくり取り組んでみようと思います。
どうもありがとうございました。

投稿日時 - 2011-02-20 22:45:43

ANo.2

INDIRECT関数を使ってください。
=INDIRECT(B2&"bsheet!$A$1")

投稿日時 - 2011-02-20 19:17:00

お礼

ご回答ありがとうございます。
私の使っているエクセルの場合、B2だけでは読みこんでくれないようです。
1番目の方の回答にある[" & B2 & "]が必要なみたいです。
どうもありがとうございました。

投稿日時 - 2011-02-20 22:49:14

ANo.1

=INDIRECT("[" & B2 & "]bsheet!$A$1")

としてください。

投稿日時 - 2011-02-20 19:12:10

お礼

早速のお返事ありがとうございました。実は、初めてのOKwaveでの質問だったため回答の見方がよくわからず、3時間も経って拝見することになり失礼しました。
ちゃんとファイル名を読み込んでくれました。
もしこの回答をすぐに見ていたら、即座に解決で終わっているところでした。
ありがとうございました。

投稿日時 - 2011-02-20 22:25:10

あなたにオススメの質問