• ベストアンサー

INDEX関数の参照範囲にセルを指定する方法

INDEX関数で別のエクセルファイルからデータを取得したい。 現状、ファイルパスを直接指定してデータを取得しておりますが ファイルパスを入力したセルを参照範囲に指定してデータを取得できるようにしたいです。 INDEX関数を入力するエクセルファイルをFile①、 別のエクセルファイルをFile②とする。 File②のファイルパスをFile①のA1セルに入力し、 INDEX関数の引数にA1を指定してデータを取得することはできますか?

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.3

A1にフルパスを記載していないと、たまたま同じファイル名のブックが別のフォルダに存在していた場合、開いた参照先ブックによって表示される値が違うという事が起きてしまいますので、開いた参照先ブックによって値を変更したいという要望でもない限り、今回のように数式の一部を別セル参照するような場合は、フルパスを記載していた方が無難です。 A1を参照せずに数式で直接ブックを参照した場合は、開いた時と閉じた時で数式の記載が変更されますから上記のようなことが起きないようになっています。

その他の回答 (2)

  • luka3
  • ベストアンサー率74% (298/400)
回答No.2

A1に ''[File②.xlsx]Sheet1'! と入力しておき(頭の ' は2つ)、 使いたいセルで、 =INDEX(INDIRECT($A$1 & "A1:Z10"), 1, 1) といった感じでしょうか。 シートも個別に指定したいなら、 A1 =''[File②.xlsx] 使用時 =INDEX(INDIRECT($A$1 & "Sheet2'!A1:Z10"), 1, 1) A1のところでフルパスを入れてもいいですが、No.1さんの言う通り、File②.xlsxを同時に開かないと値が反映されませんので、フルパスを入れる意味がないです。

8210tnk
質問者

お礼

補足していただきありがとうございます。 解決いたしました。

  • kkkkkm
  • ベストアンサー率65% (1617/2456)
回答No.1

対象のファイルが開いている場合は C:\Ok\[abc.xlsx]Sheet1'!$E$5:$E$7 のようにA1でシートまで指定している場合 =INDEX(INDIRECT("'" & A1),1,1) とかでいけます。ただ、対象のファイルが閉じている場合はエラーになりますので、たとえばVBAで A2に数式を入れるとして Sub Test() Range("A2").Formula = "=INDEX('" & Range("A1").Value & ",1,1)" End Sub みたいな感じでA1の値をもとに数式を書き込むことで対応できると思いますが、いつ書き込むかですね。

8210tnk
質問者

お礼

ありがとうございます。 解決いたしました。

関連するQ&A

  • Excelで関数の参照先をセルの値で指定するには?

    Excel2000を使用しています。 関数が参照するセルを指定する場合、例えばSUM、のとき。 セルA1には"B1"と入力されており、 同様にセルA2には"B5"が入力されていたとして(もちろん " は実際には入力されてません)、 この セルA1 と A2 のテキストデータを参照して、SUM(B1:B5) を得るにはどのように範囲を指定したらよいのでしょうか? 別にセルA1 と A2 が "B1" 及び "B5" でなくてそれに代わるものでも構いません。 要は関数が参照するセルをほかのセルの値で指定したいのですが。

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

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

  • ExcelのINDEX関数がうまく参照出来なくなってしまいました

    Excel2000を使用しています。 引き継いだファイルの関数がうまく表示できなくて困っています。 元に戻したいのですが、どのようにしたらもとにもどせるでしょうか? sheet1で、sheet2の住所録を参照して、該当番号に合う住所が表示されています。 Sheet1の数式が入る場所は「=INDEX(住所,A1)」となっています。 A1には、1~300の数字が入っており、その数字を参照して該当住所が表示されるようになっています。 しかし、なぜか280番台以降の住所が、#REF!でうまく参照出来なくなってしまいました。 仕方ないので、関数の挿入でINDEX関数を挿入して、 =INDEX('sheet2'!I1:I300,A1) と入力したら、1~300までの住所はうまく表示出来るようになったのですが、 もとの数式の通りに「参照している部分を”住所”」と表示したいのですが、どのようにしたらいいのでしょうか? 他のINDEX関数を使っているセルは、=INDEX(電話番号,A1)のようになっています。 分かりにくい説明ですみません。よろしくお願いします。

  • VBA セル内の関数の参照先

    あるExcel2000のファイル セル A1に20 A2に30 A3に50 A4に10 A5に60 セル B1に30 と表示されています B1の中は =Average(A2:A4) となっています 私はVBAでこのB1の中のAverage関数の参照先を取得したいのですがその方法が分かりません 例えば A=Cells(1,2)や A=Range(B1) としても変数Aは当然ですが30となってしまいます EXCELの関数でセルの中にある関数や参照先を抽出出来るものがないかと探して見ましたが私には見つける事が出来ませんでした。 セルの中にある関数、もしくはその関数の参照先を抽出する方法は無いのでしょうか よろしくお願いします。

  • エクセルVLOOKUP関数の範囲指定で別ファイルを参照したい。

    エクセルVLOOKUP関数の範囲指定で別ファイルを参照したい。 初心者です。VLOOKUP関数の範囲を別のファイルから参照させたいのですが どうしたらいいのでしょうか?ちなみに別ファイルはマクロを含んでいます。 関数式を手入力するのではなくて、エクセルのダイアログボックスでマウスにて試しましたが 別ファイルの範囲をドラッグしても何にも反応しません。 fx関数ボタンを利用しての方法を教えていただけるとありがたいです。

  • エクセル関数のセル参照方法

    エクセル関数のセル参照で、あるセルに入力した数値を、参照するセルの行番号として使いたいのですがどうしたらよいのでしょうか? VBAではそのような方法があったと思うのですが、関数で処理する方法はあるのでしょうか? たとえば、 =SUM(C5:C*) のような関数で「*」を他のセルに入力して参照させることは可能でしょうか? よろしくお願いいたします。

  • 複数のセルの関数で指定したセルを同時に変更したい

    複数セルに入力された関数が参照するセルを、同時に変更することはできますか? 関数で参照したセルが間違っていたり、新しいデータ入力でセルがズレた場合などで関数で指定されているセルを変更するのは手作業でやると面倒です。おまけにそれが複数の関数に影響したら一つ一つ手作業で変更していたら日が暮れます。 一括で指定セルの変更を行う方法はありませんか? ちなみに今回、全ての関数は同じセルを参照しています。

  • EXCEL 結合されたセルを関数で参照する方法について

    お世話になります。 EXCELにてDBとして入力されたものを必要な部分のみ抜き出したファイルを作成する為、 関数で元シートへのセル参照させるシートを作成したのですが 結合された部分の参照ができなく困っております。 <例>~~~~~~~~~~~~~~~~~~~~~~~~~ SheetA [A1~A10][A11~A20]が結合セル SheetB [A1]に「='SheetA'!A1」 [A2]に「='SheetA'!A2」 [A3]に・・・[A20]まで同様 とさせるとA1とA11のみSheet1の値が反映されてA2~A10、A12~A20が出力されない。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ A2~A10をA1とさせるとすればいいことですが 実際には数百件のデータ入力があり、結合部分も複数存在しています。 今後DBが増えていくことを考え、関数式セル右下ひっぱりの連続データ作成で対応させたいのですが、 SheetBでの A2 が "Null" であったら上方向へ検索し文字入力があった部分を引用させるといった 関数をくむことが出来ませんでした。 なにかいい知恵をご教示頂けましたら幸いと思います。 ことばではわかり難いかもしれませんのでJPG添付もさせていただきます。

  • Excel関数で、範囲内の最後のセルを得る方法

    Excelの表の中で、範囲内の最後のデータ、例えば、a1:a9のうち、a3:a5だけにデータがあるとき、a5のデータを取得したいとき、どんなふうに関数を入力すればいいですか? 始まるセルも、終わりのセルも一定でない場合を想定しています。 ここでいう最後とは範囲内のもっとも下のデータという意味です。 やりたいことは分っても関数名も組み合わせ方も分りません。 例えば、データがある、範囲を特定し、その範囲の最後のセルのセルを返してもらうでもいいかもしれません。 目が見えないので、参考URLなどを張っていただく際は、どうか、テキスト情報が多いものを張ってください。 よろしくお願いします。

  • INDEX関数で複数のセル値を結合するには??

    会社で、INDEX関数を使って請求書を作成しています。 今は、取引先の住所と社名を各々別のセルにINDEX関数を使って引っ張ってきています。請求書シートのA1に住所が入り、A2に社名が入るという感じです。ところが、住所と社名を一つのセルにつなげてA1に入力しなければならなくなりました。 参照元の取引先一覧は別シートで、取引先の住所はA列、社名はB列に入っていて、こちらを変更することはできません。 自分で調べてはみたのですが、解決策がみつからず、困っていますぅ。誰かお知恵をお貸し下さい~。。

専門家に質問してみよう