• 締切済み

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

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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に入る。

tosi0000
質問者

お礼

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

noname#9284
noname#9284
回答No.2

ややこしい表現がありましたので言い換えます。 そこからシートを集めてしまってもとのファイルとリンクさせ、 ではなくて 各ファイルにリンクさせたシートを作り、 の表現の方がいいと思います。

noname#9284
noname#9284
回答No.1

=VLOOKUP(A1,INDIRECT(A1&"!$A$1:$E$10"),4,FALSE) となると思いますが、 INDIRECT関数の性格上、B.xlsを同時に立ち上げておきませんと #REF!になってしまいます。 ということで、リンクしたいファイルが5個ありましたら、 そこからシートを集めてしまってもとのファイルとリンクさせ、 同じブックの中の各シートをINDIRECTで参照をしたほうがいいと思います。 あとはVBAなど・・・。

tosi0000
質問者

お礼

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

関連するQ&A