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

解決済みの質問

エクセル2000でファイル間セル参照とセル値でファイル名参照

ロータス123では出来た、元々あるファイルからある数値(セル)を新規ファイルへ参照したい式がエクセルでわかりません。
ファイルは電気検針等毎月使いますが、今月の数値-前月の数値で使用量を計算します。

しかし、検針日(2004年11月)西暦(1つのセル)、月(1つのセル)でこの月の部分を変更することにより前月のファイル(2004-10.XLS)の今月の数値(セル)を2004-11のファイルの前月の数値へ参照させるにはどうしたらいいでしょうか。
ロータスでの式は
「IF($D$2=1,@@("<<c:\検針\"&@STRING($B$2-1,0)&"-12.123>>E2"),@@("<<c:\検針\"&@STRING($B$2,0)&"-"&@STRING(@CHOOSE($D$2,0,12,1,2,3,4,5,6,7,8,9,10,11),0)&".123>>E2"))」でした。(たぶん@CHOOSE($D$2..は「$D$2-1」でもいいかもしれませんが今月-1で1ヶ月前をあらわしてます。@STRING(..は数値を文字列に変換しています。)
B2は西暦で、D2は月です。1月の時だけ西暦を-1し、12月分を参照すし、それ以外は、セルの西暦-月をファイル名として参照させています。
別ファイルの参照式は「’(絶対パス)¥[(ファイル名.xls)](シート名)!’(セル)」
で試しましたが、「[ 」以降もセル値を反映させることが出来ませんでした。
「[ 」以降関数を入力しても入力通りの参照ファイルを探しにいきます。
よい式や関数はあるでしょうか。

投稿日時 - 2004-11-21 01:07:57

QNo.1093442

困ってます

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

A1にファイル名:2004-10.XLSが入っているとして

=INDIRECT("["& A1 &"]" & "Sheet1!$A$1")
のようにして参照できます
すでに述べたように、"同時に開いていないとダメ"です。
A1の部分は
=B1 & "-" & C1 & ".XLS"
の様にできます

投稿日時 - 2004-11-21 04:18:31

補足

なぜだろうできない。。。

投稿日時 - 2004-11-21 14:10:39

お礼

この方法しかないみたいですね。検索&置換をマクロとかも考えたんですけど、あまり実用的でもないので。上記の方法を採用させていただきます。ありがとうございました。

投稿日時 - 2004-11-21 22:14:55

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

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

回答(3)

ANo.2

実行時にファイル名を変更したものでセルの参照をするには、
INDIRECT関数が使えますが、
絶対パスを参照した参照には使えません。
また、別ファイルを参照する場合は、そのファイルが開いている必要があります。

投稿日時 - 2004-11-21 03:16:23

補足

ぶっちゃけて言うと「’(絶対パス)¥[(ファイル名)](シート名)’!(セル名)までは何とかわかったんですが、「[ 」以降のファイル名指定部分をなんとかセル名で解消する方法ってないんでしょうか。「”」(ダブルコーテーション)で区切ったり「&」で繋げたりしましたが、うまくいかなかったです。

投稿日時 - 2004-11-21 03:33:15

ANo.1

とりあえず、2つのファイルを両方開いて、
入力を
=
で始めて、もう一つに切り替え参照したいセルを選び、エンターを押すと参照できます。

投稿日時 - 2004-11-21 01:17:46

補足

使い方の補足、まず前月分のファイルを開き(2004-10.xls)セルD2(月)を10から11へ変更する。そして、名前を付けて保存で「2004-11.xls」のファイル名をつけて保存する。このセルD2が毎月変更して、前月分(今月ー1)のファイルを参照させる。使い方をしています。参照式で使う「 [ 」以降関数をいれても入力通りのファイル名を探そうとするので、ファイル名指定のカギ括弧「 [ 」以降でも関数を使いたいのですが・・・

投稿日時 - 2004-11-21 01:46:19

あなたにオススメの質問