エクセル関数でセルに書いたファイル名を参照する方法

このQ&Aのポイント
  • エクセルの関数を使用して、セルに書かれたファイル名を参照する方法について知りたいです。エクセル関数初心者の方でも利用できる方法を解説します。
  • 他の開いているファイルの特定のデータを参照するために、エクセル関数(主にOFFSET関数)を使用する方法について説明します。
  • 特定のファイル名を別のセルに入力し、それをエクセル関数で参照する方法について解説します。ファイル名をセルで管理することで柔軟にデータ参照を行うことができます。
回答を見る
  • ベストアンサー

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

エクセルの関数で、セルに書いたファイル名を参照する方法が知りたいです。 エクセル関数初心者レベルです。 別のファイル(開いた状態)に欲しいデータがあって、そのデータを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と打ち変えてみたりもしたのですが、うまくいかないようで。 どなたか教えて頂けるとたすかります。よろしくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

(1))http://www.excel-jiten.net/formula/ref_other_books.html の最後のほうの他ブックセル参照をまず勉強すること。 (2)次にその文字列を、セルに在るブック名文字列やシート文字列および特殊記号を&で連結して正しい文字列を作ってください。そのセルをB1セルと仮定すると (3)=INDIRECT(B1)として正しい値が取れて居るか確認する (4)=INDIRECT() のカッコ内にB1の式を入れて完成形にする(B1の式の先頭の=は不要だが) 相当エクセル関数のベテランになるまでは、(2)-(4)のステップはやったほうが良い。

marygold39
質問者

お礼

ご親切にありがとうございます。 こういう方法があるのかと大変勉強になりました。 おっしゃるとおり、一歩ずつ進めようと思いました。 ありがとうございました。

その他の回答 (3)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

直接参照: =[afile.xls]bsheet!$A$1 間接的に参照: =INDIRECT("["&B2&"]bsheet!A1") 間接的に参照しながら関数で処理する: 目的のシートのA3セルを =INDEX(INDIRECT("["&B2&"]bsheet!A1:A10"),3) ただしafile.xlsは必ず「開かれていなければなりません」。 閉じたブックに対してこの方法は使えませんので,実際には閉じたまま作業したかった時は ○必要なブックを網羅して参照する式を裏シートにでもずらり並べておき,その範囲を可変で参照する式を作成する ○マクロを使う などの方法になります。

marygold39
質問者

お礼

非常にわかりやすい回答をありがとうございます。 「OFFSET関数等」と書いたところにもちゃんと回答してくださったんですね。 感激しました。 INDEX関数というものの存在がわかって大変勉強になりました。 じっくり取り組んでみようと思います。 どうもありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

INDIRECT関数を使ってください。 =INDIRECT(B2&"bsheet!$A$1")

marygold39
質問者

お礼

ご回答ありがとうございます。 私の使っているエクセルの場合、B2だけでは読みこんでくれないようです。 1番目の方の回答にある[" & B2 & "]が必要なみたいです。 どうもありがとうございました。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

=INDIRECT("[" & B2 & "]bsheet!$A$1") としてください。

marygold39
質問者

お礼

早速のお返事ありがとうございました。実は、初めてのOKwaveでの質問だったため回答の見方がよくわからず、3時間も経って拝見することになり失礼しました。 ちゃんとファイル名を読み込んでくれました。 もしこの回答をすぐに見ていたら、即座に解決で終わっているところでした。 ありがとうございました。

関連するQ&A

  • エクセル関数>参照ファイル名をセルから呼び出す

    別ファイル(ブック)のセルを表示させたいのですが、例えば =[あいうえお.xls]かきくけこ!$A$5 とせずに、 ファイル名は A1セル の文字列を充てる、というようなことは出来ないでしょうか? 関数が分からない人でも、簡単に参照したいファイル名を変えられるようにしたいのです。 よろしくお願い致します。

  • エクセル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)](シート名)!’(セル)」 で試しましたが、「[ 」以降もセル値を反映させることが出来ませんでした。 「[ 」以降関数を入力しても入力通りの参照ファイルを探しにいきます。 よい式や関数はあるでしょうか。

  • エクセル MATCH関数でファイル名等の値をセルから持ってくる方法を教えてください

    エクセル初心者です。 MATCH関数で、別ファイルの値を取得しようとしていますが うまくいかないのでどなたか教えていただけませんでしょうか? 下記のように直接ファイル名やシート名を記述するとうまく いくのですが、 [式]  =MATCH(C7,[test.xls]テストシート!C1:C100,0) ファイル名とシート名を変えることがあるので、  セルB5 → test.xls  セルC5 → テストシート として、B5とC5を用いて記述しようと、&や""を使っていろいろと 式に入れてみたのですが、うまくいきません。 途中まではうまくいきそうになっても、C1:C100 の範囲指定で tesx.xlsではなくて自分自身の C1:C100 を参照したりと、 思った結果になりません。 どなたか、教えていただけると助かります。 宜しくお願いいたします。

  • Excelにて外部Excelファイルのデータを参照する方法

    お世話になります。 Excelにて外部のExcelファイルのデータを参照する方法を教えていただけませんでしょうか。 具体的には、 1.Excelファイルa.xls b.xls c.xls・・・ があります。 2.a.xlsの a1 に b.xls の a1 の値を入力し、続けて a.xls の a2 に c.xls のa1・・・を繰り返していきます。上手く説明できないので、下を参照願います。 ------------------------------------------------ <a.xls> |a |b |c -+------- 1|a1|b1|c1 ←b.xls ないのa1-c1のデータ 2|a1|b1|c1 ←c.xls ないのa1-c1のデータ 3|a1|b1|c1 ←d.xls ないのa1-c1のデータ ------------------------------------------------ 上記を数百のファイル分行いたいのですが、外部ファイルを開いて該当のセルをコピーしていると非常に時間がかかります(といいますか無理でしょう)そこで、これらを数式から指定して、セルにコピーする事により、作業を効率化したいというわけです。 そのような方法がございましたら、教えていただけませんでしょうか。 よろしくお願い致します。

  • エクセルのセル参照でファイル名の変更について

    今、エクセルで別ファイルからセル参照でデータを持ってきているものがあるのですが、 データの参照先のファイル名を、どうしても変更する必要が出てきました。 データ自体が月毎で集計するので、今後も参照先のファイル名は一部分ですが 変更する事になります。 セル参照の数式が入っているファイルで、置換をしようとすると、「値の更新」という表記で ファイルを選択する画面が開いてしまい、該当ファイルを選択しても、一つのセルしか 更新しません。この方法だとすごく時間がかかってしまうので、一度にファイル名を変更する 方法はないでしょうか? いい方法がありましたら教えていただければと思います。よろしくお願いいたします。 エクセルは2010を使用しています。

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

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

  • エクセルでその都度ファイル名を変えてデータを読む

    セルにファイル名を入れるとそのファイルからデータを読むようにしたいのですが。 具体的には、0901.xls、0902.xlsというように日々の売り上げデータを管理していますが共通に使うファイルなのでファイル自体を加工したくありません。そこで別のエクセルfileで、あるセルに「0901.xls」と入れるとfile0901.xlsから所定のデータを読むようにしたいのですが関数ではできないでしょうか? よろしくお願いします。

  • エクセルで他のファイルのセルを相対参照したい。

    エクセルファイルAとBが別々のフォルダにあります。Aの中でBのセルを参照したいので、Aの中のセルに「=」を書き、そのままBのファイルの該当セルをクリックし、リターンを押しました。 すると、 「='C:\Documents and Settings\USERNAME\デスクトップ\フォルダ名\サブフォルダ\サブサブフォルダ\サブサブサブフォルダ\[エクセルファイル名.xls]シート名'!E8」 こんな感じの値が代入されて希望通りの結果になりました。 このAとBのフォルダ構造を維持したまま別の場所に移動させたいのですが、「='C:\Documents and Settings\USERNAME~~~」と言う感じの絶対参照になっていますのでエラーになってしまいます。 この部分を相対参照で記述できれば移動ができると思うのですが方法がわかりません。 どうしたらいいでしょうか。 どこかのセルにフォルダ位置を書いておいて間接参照みたいな方法でもいいのですが・・・ VBAでは"\..\~~~"みたいな感じで相対参照ができるようですが、大げさななのでVBAまでは使いたくないです。

  • 別のエクセルファイルのデータを参照して表示する方法

    別のエクセルファイルのデータを参照して表示する方法を教えてください。 A.xlsに B.xlsの中の給与一覧の合計セルの部分のみを表示したいのですが。

  • 別ファイルを参照しながらシート名を動的に

    Excelにて、VLOOKUP関数を使用し別ファイルを参照してます。 (こちらをAファイルとします) 別ファイル(こちらをBファイルとします)にはいくつかシートがあり、Aファイルに入力された値によって、Bファイルを参照するシートを変更したいのですが、うまくいきません。 AファイルはC:\workに BファイルはC:\work\workにそれぞれ配置してあります。 AファイルのセルA1には任意の値を入力可能で、その値によって参照するBファイルのシートを変更できます。 VLOOKUP(B1,INDIRECT("'C:\work\work\[Bファイル.xls]"&A1&"シート'!$A$1:$B$100") Aファイルに上記のような関数を書いても、#REFと表示されてしまいます。 どこがおかしいのでしょうか? #AファイルとBファイルを同時に開いている状態だとうまく表示されました。

専門家に質問してみよう