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

解決済みの質問

【エクセル】 関数を使って他のエクセルの値を読み込みたい

エクセルで外部ファイルの値を読み込みたいのですが、その際に読み込み先(シート)を関数を使って切り替えたいので、アドバイスをいただけないでしょうか。
検索で調べてみたらVBAを使う回答が多いのですが、VBAを使える人が周りにいない(私もそうです)ので、後々のメンテナンスを考えると関数を使って切り替えたいのです。

【環境】
WINDOWS XP エクセル2000
C:\AAA (CドライブにAAAというフォルダ)
フォルダAAAには、BBBとCCCというエクセルファイルがあります
CCCには、シート名1、2、3という3つのシートがあります。
【目標】
ファイルBBBのセルの値を操作すれば、読み込み先が変更されてBBBで表示される値が切り替わる。

【だめだった例】
BBBのセルA1にシート名を入れます。「1~3の数値」
同じくセルB1にパスを表示させます「="'C:\AAA\[CCC.xls]1"&A1&"'"」 ・・・後ろのA1が変化することで読み込み先が変わるはず。
同じくセルC1にCCCから読み込んだ値を表示させます。
「=INDIRECT($B$1&"!"&ADDRESS(ROW(F7),COLUMN(F7)))」
 ・・・B1で表示された読み込み先のセルF7の値を表示するはず。

結果は「#REF!」になります。
CCCを同時に起動させると上手く読み込むので、リンクの問題なのでしょうか?
なお関数を使わないでパスを記述したセルでは、CCCを起動させなくても上手く読み込んでくれます。

よろしくお願いします。 

投稿日時 - 2009-01-29 12:56:57

QNo.4670943

困ってます

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

INDIRECT関数は他のブックを参照している場合 (外部参照)、そのブックを開いておく必要があります。
参照先のブックを開いていない場合、INDIRECT 関数は、エラー値 #REF! を返します。
よって、VBAを使用する以外はありません。

投稿日時 - 2009-01-29 14:39:24

お礼

ありがとうございます。
関数のみを使う場合では、読み込み先のファイルを同時に開くしかないのですね。
本には書いていなかったので助かりました。

投稿日時 - 2009-01-29 17:15:33

ANo.3

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

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

回答(3)

ANo.2

質問の趣旨が良くわかりません

>【だめだった例】で示された式が理解できません
変わるはず?
表示するはず?
はずでは計算できません。


【#REF!は】
”A REFerence to a cell that does not exist”
「参照しているセルが無効」
のときに表示されるエラーです。
要するに参照するセルがない
すなわち式が間違っているということだと思います

投稿日時 - 2009-01-29 13:47:57

お礼

お教えいただき、ありがとうございます。

はず・・・、はず・・・は、余計でしたね。

投稿日時 - 2009-01-29 17:18:57

ANo.1

「リンクの更新」をしていないのではないでしょうか?

投稿日時 - 2009-01-29 13:09:06

お礼

アドバイスありがとうございます。
ファイルを同時に開かないといけないのは。INDIRECTという関数の制約条件みたいです。

投稿日時 - 2009-01-29 17:22:49

あなたにオススメの質問