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

締切り済みの質問

別excelのデータを引き出す時に、そのexcel名称を可変にしたいと思っています。

別excelのデータを引き出す時に、そのexcel名称を可変にしたいと思っています。
なるべくマクロを使わないで出来るでしょうか?

例:
=VLOOKUP(A1,[B.xls]Sheet1!$A$1:$E$10,4,FALSE)
という関数を指定したとします。

[B.xls]Sheet1
この部分をセルA1に入れて、内容を変更することで
引き出し元のファイル&シートを変えたいと思っています。

つまりA1のセルの値を[C.xls]Sheet2にすることで、C.xlsファイルのSheet2からデータを引っ張って来たいのです。

出来るでしょうか?
ご存知の方いらっしゃいましたら、宜しくお願い致します。

環境は
OS:WINDOWS98
EXCEL2000
です。

投稿日時 - 2004-02-05 12:30:32

QNo.770801

すぐに回答ほしいです

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

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

回答(3)

ANo.3

INDIRECTは(1)シート部(2)セル部(3)セル範囲

(A)セルの値の文字列で指定(B)関数式の中のリテラルの文字列で指定での2方法できるようです。
しかしBOOK名の部分は、指定して可変に出来ないようです。
VBAではWorkbooks("ブック名”).Worksheets("sheet1").Range("a1:c10")のようにこのステップが
実行される時までにブック名の文字列を置きかえれば可能です。
例えばA4に=INDIRECT(A1)といれて
A1に
B1(Sheet1のB1の値がはいる)
Sheet2!B1(Sheet2のB1の値がはいる)
[Book2.xls]Sheet2!B1(エラー)
A4に=SUM(INDIRECT(A1))でA1にB1:B3といれると
=SUM(B1:B3)の値ががA4に入る。

投稿日時 - 2004-02-05 23:10:25

お礼

有り難う御座います。
難しそうですね。
エラーを起せなくて理解できていないです。

投稿日時 - 2004-02-06 09:24:14

ANo.2

ややこしい表現がありましたので言い換えます。

そこからシートを集めてしまってもとのファイルとリンクさせ、

ではなくて

各ファイルにリンクさせたシートを作り、

の表現の方がいいと思います。

投稿日時 - 2004-02-05 13:02:49

ANo.1

=VLOOKUP(A1,INDIRECT(A1&"!$A$1:$E$10"),4,FALSE)
となると思いますが、
INDIRECT関数の性格上、B.xlsを同時に立ち上げておきませんと
#REF!になってしまいます。

ということで、リンクしたいファイルが5個ありましたら、
そこからシートを集めてしまってもとのファイルとリンクさせ、
同じブックの中の各シートをINDIRECTで参照をしたほうがいいと思います。

あとはVBAなど・・・。

投稿日時 - 2004-02-05 12:39:45

お礼

早速のご回答有り難う御座います。
内容は良く理解できました。
色々と試しながら、検討したいと思います。

投稿日時 - 2004-02-05 13:24:05

あなたにオススメの質問