• 締切済み

Excel セル参照で参照ブック指定

指定したセルに拡張子を抜いたブック名を入力し、そのセルを参照してブック参照することは可能でしょか? 「INDIRECT」では参照ブックを開かないと表示されないため目的が達成されません。 (例) Book1.xlsx A1=test Book2.xlsx A1=Book1 A2=["&(A1)&".xlsx]Sheet1'!A1 何か良い解決策をご存知の方、ご教授願います。

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

>試してみましたがうまく動かないようです。 前回の回答では未検証でしたので、今回は検証してみました。 確かにINDIRECT関数では閉じたファイルを参照できないようです。 尚、前回提示しました下記の数式は憶測によるものです。 A2=INDIRECT("[C:\ユーザー\bunjii\マイ ドキュメント\"&A1&"]Sheet1!A1") 誤りであることを確認しました。 閉じているファイル名を指定して参照するときは次のようになります。 ='D:\[Book1.xlsx]Sheet1'!A1 拡張子を省略すると自動的に付与されます。 誤りの回答を致しましたこと、お詫び致します。

cccbbb
質問者

お礼

bunjii 様 ご確認有難うございます。 いただいた内容で指定したブックを参照する事は可能ですが、A1の値を参照した上で参照先ブックを変更することはできません。 ブック指定の["&A1&"]が動けば解決しそうなんですが。。。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>指定したセルに拡張子を抜いたブック名を入力し、そのセルを参照してブック参照することは可能でしょか? 可能です。 >「INDIRECT」では参照ブックを開かないと表示されないため目的が達成されません。 そんなことは無いです。 開いていないブックを参照するときはフルパスを含むファイル名が必要です。 >(例) 提示された数式は正しくありません。 数式を提示するときは正しい数式にしてください。 Book1が開いているとき A2=["&(A1)&".xlsx]Sheet1'!A1      ↓ A2=INDIRECT("["&A1&"]Sheet1!A1") Book1がC:\ユーザー\bunjii\マイ ドキュメント\に保存されているとき A2=INDIRECT("[C:\ユーザー\bunjii\マイ ドキュメント\"&A1&"]Sheet1!A1")

cccbbb
質問者

お礼

回答有難うございます。 試してみましたがうまく動かないようです。 ファイル保存先:Dドライブ直下 ■Book1 A1=test ■Book2 A1=Book1.xlsx B1=INDIRECT("[D:\"&A1&"]Sheet1!A1") Book2のB1に「test」と返ってくれば良いのですが。

cccbbb
質問者

補足

下記のようにクォーテーション追加で動きましたが、やはり「INDIRECT」では一度でも同時に開いていれば問題ないのですが、Book2を開きなおすとエラーでますね。 =INDIRECT("'D:\["&A1&"]sheet1'!A1")

関連するQ&A

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

    こんにちはよろしくお願いいたします。 エクセルのブックファイル(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つのファイルはすべて同一ファイルに入っています。 何が,参照を阻んでいるのでしょうか?教えてください。よろしくお願いします。

  • エクセルのブック参照について教えてください

    エクセルの機能に、あるセルに=[Book1.xls]Sheet6!B5のように指定すると、他のブックを参照することができますが、 これって、ネットワークで繋がった異なるPC同士のブックでも出来るんでしょうか? 例  PC1に置いてある、Book1.xlsのSheet6のB5を PC2で制作中のブックのセルに指定する。みたいな。

  • EXCEL 参照のリンクのコピペ を別のBookに

    Book1のSheet1のA1セルに 「=Sheet2!A1」 とシートをまたがったリンクがあります。 このような参照セルがA100セルまであり、参照先は無秩序です。 この縦100個のセルをコピーして Book2のSheet1のA1セルに貼り付けると 「=[Book1]Sheet2!A1」などのように [Book1]がくっついてきてしまいますが、実際に参照させたいのは同じBook内のSheet2!A1です [Book1]をはずして一気に100個の無秩序な参照先をBook2のSheet1に貼付けをする方法はありますか? もしなければ、マクロを使って、 "[" から "]" までを削除する方法でもかまいません。 宜しくお願いします。

  • EXCEL2010 他ブック セル参照

    Book1のA1セルに、Book2のA1セルを参照するため、 ='D:\TEMP\[Book2.xls]Sheet1'!$A$1 を入力しています。 Book2のSheet1には、マクロを組んでいて、その結果を$A$1から$C$50の範囲に表示させています。 Book1のA1からC50までには、Book2のA1セルからC50までには、同様の式を入力しています。 ご教授願いたい内容は、Book2のマクロ実行後に、Book1に='D:\TEMP\[Book2.xls]Sheet1'!$A$1 を入力した場合は、その結果が表示されるのですが、その後にBook2を更新しマクロ実行すると、Book1の式が='D:\TEMP\[Book2.xls]Sheet1'!'!#REF!とエラーになってします。 Book2を開いて、整列表示の場合でも(='[Book2.xls]Sheet1'!$A$1)結果は、同じです。 何か大事なことを忘れている?または、マクロ実行結果を参照するのは元々無理なのか?悩んでいます。 一応ネット検索したのですが、該当する対処方法が見つけられず、困っています。 解決方法をご教授いただきたく、お願いいたします。

  • 別bookのセルを参照するにはどうしたらよいでしょうか

    Next Forを使用したマクロで、そのNext For構文内で、別ブックのセルを参照したいのですが、どうしたらよいでしょうか。 下記のように作成してみたのですが、テストしてみると、同ブック同シートの該当セルを参照しているようで、機能しません。下記の書き方では間違っているのでしょうね・・・。 マクロ初心者で、とても初歩的な質問で申し訳ないのですが、教えていただきたく質問させていただきました。よろしくお願いします。 必要なブックは開いている状態です。 Cells(i,_)はbook1・シート"AAA"のi行・_列目を参照し、 Cells(n,_)はbook2・シート"BBB"のn行・_列目を参照し、 Cells(s,_)はbook2・シート"BBB"のセルを参照してほしいのですが・・・。 (1) book1・シート"AAA"のi行18列目のセルとbook2・シート"BBB"のn行・1列目の値が同じであれば (2) (book2・シート"BBB"のn行・1列目)の1行下をs行目としてs行・4列目のセルとbook1・シート"AAA"のi行28列目のセルが同値であれば (3) s行4列目からs行9列目を”ClearContents”するという内容です。下記のマクロは全て記述しておりませんが、ここが間違っているのは確実だと思います。今後の勉強にも是非生かしていきたいと思っておりますので、どうぞよろしくお願いいたします。 Sub test01() Dim n As Long Dim i As Long Dim s As Long For i = 6 To Workbooks("book1.xlsx").Worksheets("AAA").Cells(Rows.Count, 16).End(xlUp).Row If Cells(i, 16) = "" Then Exit For Else For n = 4 To Workbooks("book2.xlsx").Worksheets("BBB").Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 16) <> "" And Cells(i, 18).Value = Cells(n, 1).Value Then For s = n + 1 To Workbooks("book2.xlsx").Worksheets("BBB").Cells(Rows.Count, 4).End(xlUp).Row If Cells(s, 1) <> "" Then Exit For ElseIf ..............

  • Excelでブックをまたいでシートをコピーした時に、元のブックを参照させない方法

    Excelでブックをまたいでシートをコピーした時に、 元のブックを参照しないようにしたいです。 BOOK_AというブックのシートにBOOK_Aのブック内のセルを参照する式が ある場合、そのシートをBOOK_Bというブックにコピーすると、 式の中の参照先のセルを示す部分に自動的に[BOOK_A]が追加されて、 BOOK_Aを参照してしまいます。 ここではBOOK_B内のシートを参照してほしいので、そのままの式で コピーしたいのですが、可能でしょうか? よろしくお願いいたします。

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

    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を使うやり方も考えましたが、参照先のブックを開いていないと値が表示されないようなので、却下されました。 (参照先のブックは開かなくても値を参照させたいです) どなたかご存知の方がいらっしゃったら、教えてください。 よろしくお願いします。

  • エクセルの数式から参照ブックとシートを抜き出したい

    あるセルが他のブックやシートを参照していたら、数式の中からブック名とシート名を抜き出したいです。 できれば、VBAを使う方法が知りたいです。(他の方法でも、あれば教えてください。) -- ・数式例1 ='[Book1]Sheet4 (2)'!R[-2]C ・欲しい結果例1 ブック名=Book1 シート名=Sheet4 (2) ・数式例2 =Sheet1!R[-1]C ・欲しい結果例2 ブック名="" シート名=Sheet1 ・数式例3 =A1 ・欲しい結果例3 ブック名="" シート名="" ・数式例4 =IF([Book1]Sheet2!R[-3]C="",Sheet1!R[-3]C,[Book1]Sheet2!R[-3]C) ・欲しい結果例4 ブック名=Array("Book1","","Book1") シート名=Array("Sheet2","sheet1","Sheet2") -- 例は単純にしましたが、実際には数式はもっと複雑で長いです。 列によって参照する場所が違い、どの列からどのブックやシートを参照しているのかを知りたくて、質問しました。 よろしくお願いいたします。

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

    他ブックのセル参照するのに名前をセルで指定して参照させたい。 題名が適当でないかもしれませんが、よろしくお願いします。 オフィス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-VBA】アクティブセルが参照しているブックを開くには?

    いろいろ検索したのですが、見つからないので質問させていただきます。 対象のセルが他ブックのセルを参照しているとき、そのブックが開かれていない場合、正しい値にはなりません。 (例:A1に =[Book2.xls]Sheet1!$A$3 が入力されている) そこで、そのセルが参照しているブックをVBAで自動的に開く方法を考えています。 つまり、例で言えば、Book2.xlsを開きたいのです。 文字列関数を使ってひとつひとつの文字を取得し、ファイル名を得て開く方法しかないのでしょうか? 何かいい方法があれば教えてください。 よろしくお願いします。

専門家に質問してみよう