• 締切済み

エクセルのリンクについて

こんにちは。 エクセルについての質問です。 通常、エクセルで他のエクセルからのデータを取得するとき ='[あああ.xls]sheet1'!$A$1 (「あああ.xls」のsheet1のA1セルのデータを取得) というような式を利用しますが、 この「AAA.xls」の部分を【指定したセルと同一名のものを取得】することは可能でしょうか? (すみません、意味がわかりませんよね。) 例えば… 「あああ.xls」というブックがあります。 そこに、セル「B1」に入力した名前と同じタイトルのブックの セル「A1」からデータを引っ張りたい。 「B1」が「いいい.xls」だったら「いいい.xls」のブックの「A1」から、 「B1」が「おおお.xls」だったら「おおお.xls」のブックの「A1」から データを持って来たいのです。 “=B1”というようなやり方ではさすがに無理なようで悩んでいます。 わかりにくい質問で申し訳ありません。 もしお分かりの方がいらっしゃいましたらお願い致します。

  • 4575
  • お礼率20% (2/10)

みんなの回答

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

>指定したセルと同一名のものを取得 この表現は、判りますが、正しくは、 指定したセルの値(内容)と同一名のものを取得 です。 プログラムをやると、この考え(変数という)が常態化しますので、発想は良くあるものです。 ーー エクセルの関数では、=INDIRECT()という便利な関数があって、 「()内の文字列をセル番地として見て、そのセルを参照して」という意味になります。もちろん文字列の内容は、普通に入れる場合のルールは守った形の文字列で無いとなりません。 セルの番地の指定部分は (1)ブック名 (2)シート名 (3)シートのセル番地(狭義) の3つがありますが、本質問は(1)についてです。 それぞれうまくいくか実験をしてみてください。 本件以外であらゆる場合で、関数の中で、=INDIRECT(番地を表す文字列)が有効かどうか、疑問を持ってます。 ただ本件は大丈夫です。 ="["&B1&".xls]"&B2&"!A1" セルはA1で決まっている場合です。 などセルに表示してみて、人間がセルに直接入力する時と、1字1句同じ形か確認して、=INDIRECT(・・・)を外側にかぶせ(ネスト)ましょう。

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.2

B1 に"あああ"として =INDIRECT("["&B1&".xls]Sheet1!$A$1") で、どうでしょう B1 に"あああ.xls"なら =INDIRECT("["&B1&"]Sheet1!$A$1") です

  • cagoo
  • ベストアンサー率50% (1/2)
回答No.1

concatinateとindirectを使えば解決しますよ。 たぶん、こんな感じ。 =indirect(concatinate("'[",B1,"]sheet1'!A1"));

関連するQ&A

  • エクセル

    Book1 A1セルにBook2 A1,B1,C1(同一シート)いずれかに文字あるいは数値が入力された場合 Book1 A1にリンクするようにしたいのですが =[Book2.xls]Sheet1!A1&[Book2.xls]Sheet1!B1&[Book2.xls]Sheet1!C1 とすると今後D,E・・・・と続くとすごく長い式になってしまいます。 これをもっと簡単な式に出来ないものでしょうか。(エクセル2003使用) ヨロシクお願いします。

  • 別のブックから、特定のシートを指定して他のブックを開くには

    マクロ初心者です。 A.xlsと、B.xlsという2つのブックがあります。 B.xlsはこの時、閉じた状態です。 Aには1つのシートのみがあって、Bには日毎に追加されていく不特定数のシートがあります。 Aのブックのシート内のセル番地A1に、「aaa」と入力した場合、B内の「aaa」という名前のシート名を指定してB.xlsを開くマクロはどう書いたら良いのでしょうか。 頼りきりの質問になってしまって申しわけございません。 何卒宜しくお願い申し上げます。

  • エクセルのbookを開いたときに

    作成したエクセルのBookを開いたときに指定のシートを選択している状態にしたい。 エクセルで作成したBook「基本.xls」にa,b,cというシート3つがあります。 このブックを開いたときに必ずaというシートのセルa1が選択された状態にするにはどうしたら良いのでしょうか?

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

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

  • リンク方法について

    EXCELで二つのブック間にリンクを設定し、 ブックAのあるセルに入力するとブックBの指定したセルに データーがジャンプするようにしたいのですが、 簡単に出来る方法を教えて下さい。 ブックAの各シートに入力されている数字を ブックBのある一つの表で集計したいのです。 宜しくお願いします。

  • エクセル 別ファイルから シートを リンクを張らずに コピーしたい

    エクセル2003 1~4  はファイルの状態の説明です。 やりかたを質問したい部分は 5です。  1、ファイル(ブック)A.xls → 計算式が大量に入った数シートからなるファイル があるとする。 2、A.xls を そのままコピーし コピーされたファイルは B.xls に リネーム。 3、A.xls は 計算式等は変更しないが、データを変更し通常業務で使用。 4、A.xls の新バージョンを作るために B.xls を使って計算式等を編集。 (複数あるシートのうち一部シート(シート名 「あいうえ」 とする)のみの変更に加え さらに新シート「さしすせ」を作成) 5、A.xls のシート名 「あいうえ」をB.xlsで作った シート名 「あいうえ」と置き換え、 さらに新シート「さしすせ」もB.xlsからコピーして追加する。   普通にシート名 「あいうえ」や 新シート「さしすせ」を選択し  コピーを行うと B.xls からリンクを張った状態でコピーされて  しまう。たとえば シート「あいうえ」セルA1の中身を見ると  =[B.xls]あいうえ!A1*2+1 といったように [B.xls]が付いて  コピーされる。  これを回避して、単にそのまま丸ごと(A.xlsの中だけで編集したかのように) シートをコピーするにはどうしたら よいのでしょうか?  長くなってすいません。  よろしくおねがいいたします。  

  • Excel

    A.xlsとB.xlsの2つのブックがあります。 A.xlsのSheet1のB2セルに文字列が入っています。その文字列にはJ3など列と行の組み合わせの値になってます。 このA.xlsのSheet1のB2のセルの文字列を使ってB.xlsのSheet1の上記のB2に書かれた位置のセルの値を取得したい。 これを実現するにはどうすればいいですか? ご教授お願い致します

  • エクセルのブックとシートを動的にリンクさせるには?

    お世話になります。エクセル初心者です。現在はWindowsXPでエクセル2003を使用しています。 皆様のお知恵をお借りしたくこちらに質問させていただきます。 エクセルファイル内の各シートから集約用に作ったシートにVLOOKUP等で集積させて数値の推移を図るファイルを作っています。 データ量が多くかつ、書式を少なめに使っているのですが、エクセルの書式等が認識できる許容範囲を超えてしまい、やむおえず一部データを同じフォルダ内に別ブックを作ってそちらに分割保管(Aというファイルがデータ集積表示用なのですが、Aに入れたい各データのシートが許容オーバーで入りきらず、Bというデータだけを入れた別エクセルファイルを作り、一定の量が溜まったらCというデータだけを入れたファイルを作るという形を取ります(保管するためにやむ終えずこの形を取る事になっています))する事にしました。 (※古い2003を使っていて恐縮ですが、まだまだWindows7に会社が切り替えてエクセルも最新版にしてくれる見込みがありません。。。) そこで、以下の通り入力、ブックが同じフォルダ内保管されていると仮定し、試みているのですが、「INDIRECT」だとブックが閉じている際に開けない事が調べているうちに分かりました。 私としてやりたいことは (1)A1に検索値 (2)B1にブック名(任意のローカルフォルダに保管されている前提。ゆくゆくは会社の共有しているサーバー内に格納して誰でも開ける場所に保管するつもりです、この式を入れているこの集積表示用データもB1以下に記載されるブック達と同じ場所に保管します) (3)C1にシート名(B1のブック名内にあるシート名、シート名は連番になって続いています) (4)D1にC1で指定したシート内を検索するための列番号 <現在試みている式(F1から下の行に同じ式を1つずつずらして入れていきます)> =IF(ISERROR(VLOOKUP($A$1,INDIRECT("\●●●\←ここには任意のファイル場所が書いてあるとしてください["&B1&".xls]"&C1&"!$A:$AD"),$D$1,FALSE)),"",VLOOKUP($A$1,INDIRECT("\●●●\←ここには任意のファイル場所が書いてあるとしてください["&B1&".xls]"&C1&"!$A:$AD"),$D$1,FALSE)) 月毎にBとCは1行ずつずらして値を1つずつ増やして上記式もBとCだけ1行ずつずらして書いていく方式をとっていくという形です。 ずらしてく毎にBとCの行の値が1つずく更新され、ブックとシートを上手く検索して反映させたいと思っていますが、何か上手くやれる方法はないでしょうか? (BとCのファイル名はもちろん番号が1つずつずれるように作っています。) VBAを使う方法があるのかな・・・?とも思っているのですが、なにぶん初心者なものでそのあたりが全くちんぷんかんぷんで困っています。。。 INDIRECTはブックが開いていないと反映されない事も調べて判明致しました。 どなたかお助けいただけないでしょうか? 新しいやり方やもっといい式があるという方、アイディアを拝借できれば幸いです。 VBAであればこういう風に出来るというやり方もあれば学びたいと思っています。 お粗末な内容ですがご指導お願い致します。 ※不足している情報等あればおっしゃってください。 出来れば来週中に仕上げていかなくてはいけないデータの為、大変身勝手な事を言っているのを承知しておりますが、どなたか宜しくお願いいたします。

  • エクセルマクロ コピー元と貼り付け先を指定してコピー&ペーストを実行するマクロ

    単刀直入にやりたいことを述べます。 Cドライブと仮定します。3つのBOOKがあります。 それぞれ ----- BOOK1.xls「○○Sheet」・・・(実行するファイル)   A 1 BOOK2.xls「△△Sheet」・・・(コピーするファイル名の指定です) 2 A2:E2・・・(コピーするセル範囲の指定) 3 BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル名の指定です) 4 A5・・・(貼り付け先のセルの指定) ----- BOOK2.xls「△△Sheet」・・・(コピー元ファイル)   ABCDE 1 あいうえお 2 かきくけこ 3 ・・・・・ ----- BOOK3.xls「□□Sheet」・・・(貼り付け先のファイル)   ABCDE 1 ・・・・・ 2 かきくけこ・・・(貼り付け) 3 ・・・・・ ----- >やりたいこと BOOK1.xls「○○Sheet」のA1のセルの値とA2セルの値を参照し、 その該当BOOKのセル範囲(BOOK2.xls「△△Sheet」のA2:E2)をコピーして、 BOOK1.xls「○○Sheet」のA3のセルの値と、A4セルの値を参照し、 その該当BOOKのセル範囲(BOOK3.xls「□□Sheet」のA5)へペーストする。 別のブックの指定したセルの値を別のブックの指定したセルへ貼り付けるだけなんですが、 以前関数を使って似たような事をしようとしたのですが、うまくいかなかったので、マクロならできるのでしょうか。 よろしくお願いします。(ちなみにエクセル2000又は2003です)

  • エクセルでブック間のシートの合体?教えてください。

    エクセルの作業で困っちゃいました。 同じホルダー内に 0210A.xls、sから0309A.xlsの12種類 0210B.xls、sから0309B.xlsの12種類 0210C.xls、sから0309C.xlsの12種類 0210D.xls、sから0309D.xlsの12種類 の48のブックがあります。(0210は2002年10月の意味です。) 各ブックは複数のシートを持っており、各ブックに共通してあるのは「AAA」、「BBB」、「CCC」の3種類で、それ以外のシートもあります。シートの順番は各ブックによりまちまちです。 これらのブックの共通する3種類のシートだけを合体して 0210AB.xlsから0309AB.xlsの12種類、(AとBの合体) 0210CD.xlsから0309CD.xlsの12種類、(CとDの合体) の24種類のブックを作りたいのです。 各ブックは「AAA」、「BBB」、「CCC」の3シートを持ちます。中身はオリジナルの各「AAA」、「BBB」、「CCC」の単純な寄せ集めです。 データは各シートとも1行目に項目、2行目以降にデータで、列はAF列まで使用しています。データの個数はまちまちで、オートフィルターを使用しています。 たとえば、0210A.xlsのシートAAAが200行であれば0210BのシートAAAのデータの一行目の項目は不要ですので2行目から最終行までコピーして201行以降に貼り付けるという感じです。同様にシートBBB、シートCCCも処理します。各シート1行目はオリジナルと同じ項目名とします。 手作業でやろうと思いましたが、誤りの発生もこわいのでVBAなどでうまくできる方法はないでしょうか?わたしのVBAの知識はマクロ自動記録ができるくらいなので助けてほしいのです。 Windows2000でエクセルも2000です。 よろしくお願いしま~す。

専門家に質問してみよう