海外旅行から帰ってきたら、まず何を食べる?

別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
です。

A 回答 (3件)

=VLOOKUP(A1,INDIRECT(A1&"!$A$1:$E$10"),4,FALSE)


となると思いますが、
INDIRECT関数の性格上、B.xlsを同時に立ち上げておきませんと
#REF!になってしまいます。

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

あとはVBAなど・・・。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/05 13:24

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に入る。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/06 09:24

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



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

ではなくて

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

の表現の方がいいと思います。
    • good
    • 0

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


おすすめ情報