• 締切済み

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

Aフォルダ内に入っている複数のファイルがあります。 abc01xyz.xls abc02xyz.xls abc03xyz.xls それぞれのブックのシートX、セルA1にはファイル名にある数字と同じ数字が入っています。 ■質問 abc02xyz.xlsのセルB2に、abc(abc02xyz.xlsのシートX、セルA1の値-1)xyz.xls のシートY、セルB2の値をコピーしたいのですが、どんな関数を使えばよいのでしょうか、いろいろ本をめくったり、インターネットで調べたのですが、なかなか参考になるケースがなくて困っておりまして、どなたか詳しい方、ご指南いただけませんでしょうか・・・。 INDIRECT関数を使うのでしょうか

みんなの回答

noname#99913
noname#99913
回答No.5

No.1のkozirou54です。 最近非常に似た質問がありました。そちらの方は解決しましたので、ご参考までに、そのURLを書いておきます。 http://soudan1.biglobe.ne.jp/qa5457010.html 回答No.7・8あたりが役立つと思います。これはマクロを使って、次々にファイルを開き、データを取り込むものです。

kururu1023
質問者

お礼

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

noname#99913
noname#99913
回答No.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")

kururu1023
質問者

お礼

ご回答ありがとうございます。 なるほど、開いておくのをすっかり忘れておりました。 そういえば本に書いてありました・・・。 kozirou54さんの式できちんと動作致しました。 あとは、abc(XX-1)xyz.xlsを自動で開ければOK(手間的に)なのですが。 エクセルは難しいですね。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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になりました。 このブック版と思いますが。

kururu1023
質問者

お礼

ご回答ありがとうございます。 参照記事参考になりました。 説明不足で申し訳ありませんでした。 例では数字が入っていますが、正確には 同フォルダに保存されている、abcXXxyz.xls(XX=01~99) のどのファイルを開いてもSheet1のB2には、abc(XX-1)xyz.xlsのSheetYのB2のデータをコピーしたいのです・・・。 INDIRECT関数でできたらいいなと思っておりますがVBAでも同じ動作できればいいのですが、私の自宅のエクセルを会社のエクセルが2007と2003と違うので、自宅でこしらえて会社で使用というのが少々不安です・・・勝手も少し違いますし。

noname#99913
noname#99913
回答No.2

データが数値だと0が付かないので、こちらの方がいいかな。 =INDIRECT("[abc"&TEXT(INDIRECT("[abc02xyz.xls]Sheet1!A1")-1,"0#")&"xyz.xls]SheetY!B2")

kururu1023
質問者

お礼

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

noname#99913
noname#99913
回答No.1

=INDIRECT("[abc"&INDIRECT("[abc02xyz.xls]Sheet1!A1")-1&"xyz.xls]SheetY!B2") 検証はしていませんが、おそらくこうなるのでは……。試してみてください。シートXが「シートX」なのか「X」なのかわからなかったので、「SheetX」としてあります。

関連するQ&A

  • エクセルの関数で、セルに書いたファイル名を参照

    エクセルの関数で、セルに書いたファイル名を参照する方法が知りたいです。 エクセル関数初心者レベルです。 別のファイル(開いた状態)に欲しいデータがあって、そのデータをexcel関数(できればOFFSET関数等)を使って他のファイルで参照します。 その際、その関数に記載されるファイル名を別のセルに記入して、それを参照させるようにしたいのですが、どうすればよいのでしょう。 たとえば、afile.xlsというファイルのbsheetというシートのA1セルに欲しいデータ(数字または文字)があるとします。 afile.xlsを開いた状態で、別のファイル(new.xlsとします)のセルに、"="で参照させると =[afile.xls]bsheet!$A$1 という関数が入り、データも表示されています。 ここで、たとえばnew.xls上の B2セルに " afile.xls " とベタ打ちして、 上掲の=[afile.xls]bsheet!$A$1の [afile.xls] のところをB2セルを参照させるようにしたいです。単純にB2と打ち変えてみたりもしたのですが、うまくいかないようで。 どなたか教えて頂けるとたすかります。よろしくお願いいたします。

  • 他ブックのセル参照するのに名前をセルで指定して参照させたい。

    他ブックのセル参照するのに名前をセルで指定して参照させたい。 題名が適当でないかもしれませんが、よろしくお願いします。 オフィス2000もしくは2002です。 200604.xls、200605.xlsという日付を基にした名称の規則的なブックがあります。 ファイル自体はネットワークの共通ドライブにあります。 それぞれsheet1に同様の形式で値のデータ(文字)が入っています。 その中のA1、B1、C1~・・・の値を 別ブック(仮にtest.xls)のA1に2006、A2に5と入力させることによって test.xlsの3行目に200605.xlsのA1、B1、C1~・・・の値を表示させたいです。 ブック名 test.xls    A列  B列  C列 ・・・・・・ 1行 2006 2行  5 3行 200605.xlsのA1、B1、C1~の値を表示させたいです。 4行 フォルダー名\[200605.xls]sheet1'!A1、次B1、次C1、と都度埋め込んでいけば値自体は出るのですが、 ブック名が手軽に変えられなくて困っています。 test.xlsのセルに埋め込んだ ='フォルダー名\[200605.xls]sheet1'!A1の [カッコ内]の文字をA1,A2セルに入れた値で参照させたいのですが、、、。 (A2は5ですが、参照したいのは2006の05というのも少々ミソです) 結果が同じなら手段はそんなには問いません。 よろしくお願いします。

  • Excel 読み込むファイルの名前をセル参照

    Excelで他のファイルのあるセルの値を読み込む場合、  =[hogehoge.xls]Sheet1!$A$1 などと打ち込みますが、このファイル名の部分の一部に セルの値を持ってくるにはどうしたらいいのでしょうか? つまり、A1セルに「2」が入力されているときなら、  =[hogehoge2.xls]Sheet1!$A$1 A1セルに「3」が入力されているときなら、  =[hogehoge3.xls]Sheet1!$A$1 としたいのです。(他の部分は固定) よろしくお願いします。

  • 他のブックファイルのセルの参照が上手く行きません

    こんにちはよろしくお願いいたします。 エクセルのブックファイル(Book1.xlsx)に,他のブックファイル(Book2.xls)のセルの値を参照しようと思い”=”を入力し参照するブックファイルのセルをクリックし,「 =[Book2]Sheet1!$A$1 」のような参照を行いました。こうしてきちんと表示されました。 しかし,この参照の式を「 =[Book3]Sheet1!$A$1 」のように,他のブックファイル(Book3.xls)のセルに変更したところ,参照できなくなりました。ブックファイル(Book1.xlsx)には,「 =[Book3]Sheet1!$A$1 」という式そのものが表示された状態となっています。式は,キーボードを使って変更しました。もちろん,(Book3.xls)は,(Book2.xls)と同様のシート形式をもち,データも入力されています。 このような状態になると,先に挙げたように,”=”を入力して参照するブックファイル(Book3.xls)のセルをクリックしても,ブックファイル(Book1.xlsx)には,「 =[Book3]Sheet1!$A$1 」という式そのものが表示された状態となったままで,(Book3.xls)のデータは表示されません。 (Book2.xls)と(Book3.xls)のセルのデータは,文字列です。 気になるのは,(Book1.xlsx)はoffice2010で作成されたファイルであること,(Book2.xls)と(Book3.xls)は,互換モードと表示されるファイルであること,また表示されているファイルを見ると,フルパスで参照している点です。「 ='C:\aaa\bbb\・・・・・[Book3]Sheet1'!$A$1 」という参照式になっています。3つのファイルはすべて同一ファイルに入っています。 何が,参照を阻んでいるのでしょうか?教えてください。よろしくお願いします。

  • エクセル:別ファイル別シートのセル参照

    エクセルで別ファイルの別シートのセルを表示しようとしています。 例えば、「ABC.xls」のファイルで、この中のシート「DEF」のセル「A1」を表示するとします。「ABC.xls」はc:\に存在しているものとします。 この場合は   ='C:\TEMP\[ABC.xls]DEF'!A1 となります。 わからないのは「ABC.xls」が「ABCyyyymmdd.xls」の場合です。yyyymmddはシステム日付です。 申し訳ありませんが、だれか教えて下さい。

  • 参照先をセルに入力して、他のブックのセルを参照する方法

    Excelで、他のブックのセルを参照したいです。 たとえば、あるExcel(test.xls)上から、別のフォルダにある複数のブック C:\AAA.xls D:\BBB.xls の値を参照する場合ですが(AAA.xlsとBBB.xlsは、値の内容は違うが、同じシート名の同じセルに値が入っている)、 test.xlsのSheet1のA1に「C:\」、A2に「AAA.xls」を入力すると、test.xlsのSheet2にはAAA.xlsの値を表示し、 test.xlsのSheet1のA1に「D:\」、A2に「BBB.xls」を入力すると、test.xlsのSheet2にはBBB.xlsの値を表示するような方法です。 参照先が固定であれば、='C:\[AAA.xls]Sheet名'!D5・・・のような指定ができるのですが、参照するファイル名とパス名が都度変わるので、入力したセルの値で参照先を変えたいのです。 ちなみに、INDIRECTを使うやり方も考えましたが、参照先のブックを開いていないと値が表示されないようなので、却下されました。 (参照先のブックは開かなくても値を参照させたいです) どなたかご存知の方がいらっしゃったら、教えてください。 よろしくお願いします。

  • 異なるブックを結合した時のセル参照

    excel2003 異なるブックを結合した時に、セルの値を参照する方法を教えてください。 条件は、下記の通りです。 a.xlsのsheet1のA1セルのセル名称をnameとします。 b.xlsのsheet2のA1セルで=nameとします。 aとbのファイルを結合した時、a.xlsのsheet1のA1セルに何か文字列…(1)を入れた時、 sheet2のA1セルで(1)の文字が参照できる様にしたい。 同一ブック内で上記の内容実施時は、sheet2のA1セルでsheet1のA1セル参照可能ですが、 ブックを結合した時、excelの仕様なのか、 #REF!と表示されてしまいます。 最初から一緒になったファイルで作成すれば問題ないのですが、 aのファイルは共用なので、使用する時に結合する構成としているのです。 異なるブックを結合して上記の対応が可能になる方法はないものかどうか、 何か、他の代案はないかアイデアいただきたく。

  • Excel 複数ファイルの参照

    説明が難しいのですが、 例えば、デスクトップに[1.xls], [2.xls], [3.xls] ・・・ と連続したエクセルファイルがあり、 新規作成で以下のようなシートを作製して、   A B C D E F 1 1 2 2  3 3 4 4 5 5 6 6 B列にデスクトップ上の各ファイルのセルA1の値を入力したい場合、 数式を「='C:\…\デスクトップ\[***.xls]Sheet1'!$A$1」 として、***部分にセルA1~の数値を代入できるようにしたいのですが、可能でしょうか。

  • エクセルのマクロで、別ファイルの数値を参照する方法

    現在aaa.xlsというファイルを開いていて、 そのセルA1には20070621という数値が入っています。 別にbbb_20070621.xlsというファイルがあって、 そのファイルのsheet1内の、B1の値を参照したいと思います。 bbb_20070621.xlsのようなファイルが無数にあるので、 ファイルを開かなければいけないINDIRECT関数は使いたくありません。 =INDIRECT("[bbb_"&A1&".xls]Sheet1!B1") ファイルを開かず参照できるように、 できればマクロ(VBA)で組みたいと思っています。 RangeやCellでいろいろ試してみたのですが、 どうもうまくいかず、 分厚いマニュアルにも書いてありませんでした。。 初歩的な質問ですいませんが、 どなたかよろしくお願いします。

  • セルのデータを使って、ファイルを参照する方法

    現在aaa.xlsというファイルを開いていて、 そのセルA1には20070620という数値が入っています。 別にbbb_20070620.xlsというファイルがあって、 そのファイルのshhe1内の、B1の値を参照したいと思います。 こんな感じかなと想像したのですが、うまくいきません。。 ↓ =["bbb_" "& A1 &"".xls"]sheet1!B1 初歩的な質問ですいませんが、 どなたかよろしくお願いします。

専門家に質問してみよう