エクセルで別ブックのセルを参照する方法

このQ&Aのポイント
  • エクセルで別ブックのセルを参照する式の内部について説明します。
  • 別ブックのセルを参照する方法は、'パス名[ブック名]シート名'!セル名という式を使用します。
  • また、日付の部分を他のセルから取得するために文字列参照のMID()関数を使用することもできます。
回答を見る
  • ベストアンサー

エクセルで別ブックのセルを参照する式の内部

エクセルで別ブックのセルを参照する式の内部 別ブックのセルを参照する時は ='パス名[ブック名]シート名'!セル名 という式みたいなので、 ='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5 という式を作りました(パスは適当です)。 それで、 ='item\zaiko\[zaiko_2010_06_01.xls]在庫シート'!B5 ='item\zaiko\[zaiko_2010_06_02.xls]在庫シート'!B5 ='item\zaiko\[zaiko_2010_06_03.xls]在庫シート'!B5 ='item\zaiko\[zaiko_2010_06_04.xls]在庫シート'!B5 と日付を連番で複数のセルに入れていきたいので、 日付の 2010_06_01 の部分を他セルから持ってきたいのですが、 この式の中に 文字列参照のMID() とかで挿入できるでしょうか? 日付の入っているセルがちょうど横の方に連番で存在しています。 分かる方いましたら教えてください。 よろしくお願いします。

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

=INDIRECT("''item\zaiko\[zaiko_"&A1&".xls]在庫シート'!B5") とすれば出来ることはできますが、参照先のブックは開いている必要があります。 単に、沢山の数式を入力するのが面倒だというだけであれば、A1のセル以降に日付部分が入力してある場合、 ="='item\zaiko\[zaiko_"&A1&".xls]在庫シート'!B5" のように入力し、下へ数式をオートフィル等でコピーし、 入力した数式範囲を範囲選択→コピー→形式を選択して貼り付け→値でOKし、 範囲選択したまま、編集→置換で検索する文字列「=」、置換後の文字列「=」で置換します。

neko-inu
質問者

お礼

INDIRECTで出来ましたー。 どうもありがとうございます。 日付がちょっと、2010.06.01と2010/0601だったり ファイル名と微妙に違っていたのでMIDで出来ないかなと 思ったんですがそれは調整しました。 でもこれ、参照先を開いてないといけないんですね。。。 何十個も開けないですし、根っこの部分が盲点でした……。

その他の回答 (4)

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

日付の整形はTEXT関数でします。 A4に日付が記入してあるなら ="='item\zaiko\[zaiko_" & TEXT(A4,"yyyy_mm_dd") & ".xls]在庫シート'!B5" で数式の文字列を作成し,コピーして形式を選んで値のみ貼り付けてから,=を=に全て置換。 で。マクロを使ってしまうなら,そんなに手の込んだ道具を使わなくても「数式をそのままマクロで書き込ませてしまえ」ば出来ます。マクロではTEXT関数の代わりにFormat関数を使います。 sub macro2() dim h as range for each h in range("A4:A28") h.offset(0, 1).formula = "='item\zaiko\[zaiko_" & format(h, "yyyy_mm_dd") & ".xls]在庫シート'!B5" next end sub

neko-inu
質問者

お礼

ありがとうございます。 今回はマクロで日付の入っているセルをループさせて読もうと思います。 形式とかが変わったら参考にさせてもらいます。

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

質問が1とびして難しいほうに行っているのですが、本当は学習という点から言えば 学ぶのは下記の(1)ー>(2)の順である。 下記の(2)のようにデータを他ブックに別々に保存すると、後の利用の際に 色々な点で、難しくなる。 (1)同一ブックの複数シートの場合 Sheet1からSheet4のA1セルにA,B,C,Dと入れておく Sheet1のC1にSheet1と入れる +ハンドルを出してC4まで引っ張る。 Sheet1 Sheet2 Sheet3 Sheet4 となる。 E1セルに =INDIRECT(C1&"!A1")と入れて下方向に引っ張る 結果 A B C D のようにSheet1からSheet4のA1の値を持ってくる。 (2)別々のブックの場合 同じような考え方だが、そのブックを開いておかないと そのブックのそのシートのセルを参照できない。 そこでVBAなら 開いているsheetに 01化 01化B 01化c のように「同一フォルダに在るExcelブック名」を例えで3つ書き上げておく。 Sub test01() For i = 1 To 3 Path = "C:\Documents and Settings\OTO\My Documents" file = Cells(i, "C") Cells(i, "A") = ExecuteExcel4Macro("'" & Path & "\[" & file & ".xls]" & "Sheet1" & "'!R1C1") Next i End Sub /は¥で置き換えること。 をVBEの画面に貼り付けて実行すると、結果は A1:A3に シリアル番号 コード 室料 と取れる。たまたま私の場合には上記3つのブックのSheet1のA1セルには、上記のデータが入っていたもの。 この場合は見かけ!では、各上記ブックを開いているようには見えない。 これを質問の場合も使えると思う。

neko-inu
質問者

お礼

ありがとうございます。 順番にやってみました。 VBAも、入れてみたら動いてくれたので色々といじってやってみます。 '完成品のシート4行目から28行目まで入れる処理 For i = 4 To 28 'X列について。ファイル名の日付部分はA列から参照する Cells(i, "X") = ExecuteExcel4Macro("'item\zaiko\[zaiko_" & Cells(i, "A") & ".xls]在庫シート'!R7C3") Next i

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A1セルから下方に2010-06-01のように日付が入力されているとしたら次のように式を作って下方にオートフィルドラッグすればよいでしょう。 =INDIRECT("'item¥zaiko¥[[zaiko_"&A1&".xls]在庫シート'!B5")

neko-inu
質問者

お礼

その式で挿入の目的は果たせましたー。 どうもありがとうございます。

回答No.2

残念ながらそのようなことはできません。 Indirect関数を使うとできるのですが、対象のブックを開いておく必要があります。 しかし、一方通行(下記で言うA1,B1セル)を変化させても、求める結果がわからなくて良い。 または、質問文になるような数式を書く手間を省きたい。 ならば方法があります。下記を参考にして、10セル位で試してから行ってみてください。 A1 C B1 3 C1 ="="&A1&B1 C1セルコピー E1セルに形式を選択して貼り付け 値 E列を = から = へ置換。

neko-inu
質問者

お礼

文字を結合して作った文字をさらにセル指定で使用できるんですね。 "="を最初文字で作っておいて増やしてから値に変換で計算させると。 これは応用が利きそうです。どうもありがとうございました。

関連するQ&A

  • エクセルで別ブックのセルを参照する式

    エクセルで別ファイルのセルを参照する方法をお教えください。 一日1シートに在庫を記録しているブックがあります。 ブックは一か月ごとの、新しいブックになります。 シートの名前は11月1日なら、「1101」というふうにしています。 各シートのセル、C17~E17、C18~E18 、C19~E19の部分だけを別ブックに参照して表を作りたいのです。 別ブックのセルを参照する時は、='パス名[ブック名]シート名'!セル名 みたいなので ='D:desktop[2012.11.xls]1101'!C17 という式を作りました。(パス名は適当です。) シート名の「1101」を「1102」…と簡単にしていく方法をお教えいただけないでしょうか。 QNo.5943822のinu-nekoさんの質問など参考にさせていただきましたが、回答にたどり着くことができませんでした。 ご存知の方がいらっしゃいましたら、どうかよろしくお願いいたします。

  • EXCELで別ブックのセルを参照 シートを替える

    EXCEL初心者です。 毎日四苦八苦しているのですが、行き詰ってしまったのでご教授ください。 使用しているブックをA.xlsとして、 別ブックB.xlsのセル参照を、 ='Z:\[B.xls]Sheet1'!$B$1 のようにしています。 この Sheet1 の部分のシート名をA.xlsの、例えばA1に入力することで、 毎回シート名を変えられるようにしたいのですが、 ='[B.xls]( ココ )'!$B$1  ココの部分をどのようにしてよいかがわかりません。 A.xlsのパス名から書けばよいのかなと思ったのですが、 どうもうまくいきません。 何分必要にせまられてEXCEL勉強し始めたばかりです。 初歩的な質問ですが、すみません、よろしくおねがいします。

  • エクセルで別のブックのセル参照

    Excel2000を使っています。 あるセルに、別のブックのセルの値をそのまま参照したいのですができません。解説書には [ブック名]シート名!セル番地 と書いてあってその通りにしたのですが、入力した式がそのまま表示されるだけで値が参照されません。どうすればいいのでしょうか。 あまり覗けないので回答が遅れるかもしれませんが、よろしくお願いします

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

    他ブックのセル参照するのに名前をセルで指定して参照させたい。 題名が適当でないかもしれませんが、よろしくお願いします。 オフィス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(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を使うやり方も考えましたが、参照先のブックを開いていないと値が表示されないようなので、却下されました。 (参照先のブックは開かなくても値を参照させたいです) どなたかご存知の方がいらっしゃったら、教えてください。 よろしくお願いします。

  • 別のブック、または別のシートからの参照

    Excelで日付によって、別のブック、または別のシートから特定のセルを参照させる方法はありますか? 例えば、1日に閲覧した時は別のブック(シート)のB3のセル、2日に閲覧した時はB4のセル…、次はB5、という風に参照させたいのです。 日付を表示させて、INDIRECT関数等を使って色々と試行錯誤していますが、上手く行きません…。 関数だけで作れるものでしょうか?どなたかご教授願います。

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

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

  • EXCEL 相対セル参照でいいものが、フルパスのブック名付きとなってしまう

    シートAのあるエリアのセルを シートBにて参照しています。 相対にてセル参照を作成したものですが、 日を置いて確認したところフルパスのブック名付きとなってしまったものです。 具体的には 当該のファイルが「会計報告.xls」で、c\temp に置かれている場合、 単純に「=Sheet1!A1」であってほしいのに、 「=c\temp\[会計報告.xls]Sheet1!A1」 といった具合にブックの名前まで記述されてしまう現象に悩まされているものです。 これでは他人に使用してもらうことができず困っています。 計算式の入ったセルを保護したのですがそれと何か関係があるのでしょうか?

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

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

  • EXCEL 別のブックにコピペしたときのセル参照

    2つのエクセルブックがあります。 ブックA:sheet1、sheet2 ブックB:sheet1 ブックAのsheet2にはブックAのsheet1を参照した関数が沢山組んであります。 このsheet2をブックBにコピーしたいのですが、ブックBに新しいシートを作りコピペしても、 sheet2を右クリックで「移動またはコピー」にしてもブックBに移したsheet2はブックAを参照してしまいます。   =SUM([ブックA.xls]Sheet1!A3:A7) というように。 ブックAではなく、ブックBのsheet1を参照するように =SUM(Sheet1!A3:A7) となるようにコピペしたいのです。 1つ1つ関数の参照部を消すのも面倒なので、何か良い方法はありませんでしょうか エクセル2003です。よろしくお願いします。

専門家に質問してみよう