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

締切り済みの質問

エクセル)ファイルを検索し、セルを参照

Aフォルダ内に入っている複数のファイルがあります。
abc01xyz.xls
abc02xyz.xls
abc03xyz.xls

それぞれのブックのシートX、セルA1にはファイル名にある数字と同じ数字が入っています。

■質問
abc02xyz.xlsのセルB2に、abc(abc02xyz.xlsのシートX、セルA1の値-1)xyz.xls のシートY、セルB2の値をコピーしたいのですが、どんな関数を使えばよいのでしょうか、いろいろ本をめくったり、インターネットで調べたのですが、なかなか参考になるケースがなくて困っておりまして、どなたか詳しい方、ご指南いただけませんでしょうか・・・。

INDIRECT関数を使うのでしょうか

投稿日時 - 2009-11-18 12:56:11

QNo.5457440

困ってます

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

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

回答(5)

ANo.5

No.1のkozirou54です。

最近非常に似た質問がありました。そちらの方は解決しましたので、ご参考までに、そのURLを書いておきます。

http://soudan1.biglobe.ne.jp/qa5457010.html

回答No.7・8あたりが役立つと思います。これはマクロを使って、次々にファイルを開き、データを取り込むものです。

投稿日時 - 2009-11-22 10:36:16

お礼

ご回答ありがとうございます。

なるほど・・・。
とても参考になりました。
なんとか思い通りの動作ができるようになりました。
ありがとうございます!

投稿日時 - 2009-11-26 04:38:50

ANo.4

INDIREC関数は、参照先のファイルを開いていないとエラーになります。

たとえば「abc02xyz.xlsのシートX、セルA1の値-1」が1の場合、「abc01xyz.xls」を参照しますが、その際「abc01xyz.xls」を開いておく必要があります。

ちなみに、abc02xyz.xlsからabc02xyz.xls内のセルを参照するわけですから、次の式でOKです。

=INDIRECT("[abc"&TEXT(SheetX!A1-1,"0#")&"xyz.xls]Sheet1!B2")

投稿日時 - 2009-11-19 09:38:32

お礼

ご回答ありがとうございます。
なるほど、開いておくのをすっかり忘れておりました。
そういえば本に書いてありました・・・。

kozirou54さんの式できちんと動作致しました。
あとは、abc(XX-1)xyz.xlsを自動で開ければOK(手間的に)なのですが。
エクセルは難しいですね。

投稿日時 - 2009-11-22 02:33:28

ANo.3

これはVBAの問題ですか
関数の引数における、参照の問題ですか。
ーー
前者ならWEBに沢山記事がある。
例えばフォルダ内のファイルを参照して何かをする。
ーー
前者なら例として3つあげて質問する必要が無いと思う。
WEBで「他ブック参照」で照会すれば沢山記事がある。
http://www.excel-jiten.net/formula/ref_other_books.html

そのセルの値でなくて、そこに入っているデータ’セル番地)で、もう一度セル参照するなら、INDIRECT関数をやってみてください。
簡単例
Sheet4のÅ2にXYZ(セルのデータ)
Sheet3のA3にSheet4!A2(文字列)
の場合
Sheet2のA1に
=INDIRECT(INDIRECT("Sheet3!A3"))
でSheet2のA1はXYZになりました。
このブック版と思いますが。

投稿日時 - 2009-11-18 15:04:21

お礼

ご回答ありがとうございます。

参照記事参考になりました。
説明不足で申し訳ありませんでした。
例では数字が入っていますが、正確には
同フォルダに保存されている、abcXXxyz.xls(XX=01~99)
のどのファイルを開いてもSheet1のB2には、abc(XX-1)xyz.xlsのSheetYのB2のデータをコピーしたいのです・・・。

INDIRECT関数でできたらいいなと思っておりますがVBAでも同じ動作できればいいのですが、私の自宅のエクセルを会社のエクセルが2007と2003と違うので、自宅でこしらえて会社で使用というのが少々不安です・・・勝手も少し違いますし。

投稿日時 - 2009-11-19 01:04:09

ANo.2

データが数値だと0が付かないので、こちらの方がいいかな。

=INDIRECT("[abc"&TEXT(INDIRECT("[abc02xyz.xls]Sheet1!A1")-1,"0#")&"xyz.xls]SheetY!B2")

投稿日時 - 2009-11-18 14:22:13

お礼

早速のご回答ありがとうございます。
kozirou54さんのご回答の通り入力してみましたが!REFが返ってきました。
検証してみたところ、!REFを返す直前?までは指定のファイルの指定のセルを参照しているようなのですが・・・

投稿日時 - 2009-11-19 00:50:29

ANo.1

=INDIRECT("[abc"&INDIRECT("[abc02xyz.xls]Sheet1!A1")-1&"xyz.xls]SheetY!B2")

検証はしていませんが、おそらくこうなるのでは……。試してみてください。シートXが「シートX」なのか「X」なのかわからなかったので、「SheetX」としてあります。

投稿日時 - 2009-11-18 14:19:30

あなたにオススメの質問