• 締切済み

ファイル名を書くことによるファイル内の数値の呼び出しを教えてください。

 あるエクセルファイル名をセルに書くことでその中のデータを呼び出したいと思ってVLOOKUPを使ってみたのですが…  セルB1にaaa.xlsと書いて =VLOOKUP(a,[=B1.xls]c!,$A$1:$F$50,1)と書くとファイルが見つかりませんといわれます。ファイル名を書くことでその中のデータを呼び出すことは可能でしょうか?  すいません全然分かってないので質問もよく分からないのですがなんとか大量のエクセルファイルをまとめたいです。宜しくお願い致します。

  • 1495
  • お礼率33% (1/3)

みんなの回答

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

過去の質問を検索するといろいろ出てくると思います。 いずれもマクロになりますね。 例えば、 もし、B1セルに aaa.xlsと文字入力されていて、 A1セルにaaa.xlsファイルのSheet1シートのA1セルの値を参照したい場合は、 以下のマクロを標準モジュールに登録して実行すればできます。 Sub Test() Range("A1").Value = "='" & ThisWorkbook.Path & "\[" & Range("B1").Value & "]Sheet1'!A1" End Sub ただ、マクロを使うのなら、特定のセルに入力されたファイル名の ファイルをオープンさせる事は簡単にできますよ。

1495
質問者

お礼

マクロは全然分からないんです。 ただ、やれる方法がマクロにあるということなので、 勉強します。 ka_na_deさんありがとうございました。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.2

#1です。 この方法は、 aaa.xls ファイルをオープンしていないと参照できません。 開いていますか?

1495
質問者

補足

解答いただきましてありがとうございます。 ファイルを開いておりませんでした。 ファイルを閉じたままで、参照する方法はないでしょうか? 宜しくお願い致します。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.1

もし、B1セルに aaa.xlsと文字入力されていて、 A1セルにaaa.xlsファイルのSheet1シートのA1セルの値を参照したい場合は、 A1セルに =INDIRECT("[" & B1 &"]sheet1!A1") と入力してみてください。 次に、ご質問の VLOOKUP関数への応用などはこれをアレンジしてみてください。

1495
質問者

補足

解答いただきましてありがとうございます。 しかし、そのままの方法で実行しますと#REFと表示されます。 INDIRECTを少し調べてみましたが、エクセルファイルを参照することは不可能なのでしょうか。宜しくお願い致します。

関連するQ&A

  • excel ファイル名の指定方法

    vlookupを使用して、数多くのフォルダ内のセル参照をしようとしています。 その中で、 =IF(ISERROR(VLOOKUP(B$2,'C:\Documents and Settings\user\デスクトップ\構成\[2093.xls]Sheet1'!$A$4:$F$28,6,FALSE)),"-","○") という式を使用しています。 この2093に相当するファイルが構成のフォルダに2094,2095,2096の様に4桁で多数存在しています。 またA列には、ファイル名に相当する値がセットされています。 A3セル;2093 A4セル:2094 A5セル;2095 … の通りです 上記の式がB3に入っているとして、2094に相当する行のB4は、 =IF(ISERROR(VLOOKUP(B$2,'C:\Documents and Settings\user\デスクトップ\構成\[2094.xls]Sheet1'!$A$4:$F$28,6,FALSE)),"-","○") の様に設定したいのです。 1つ1つ手動での修正でなく、コピーペーストみたいな感じで、 いっきに対応可能な方法はありませんでしょうか?

  • エクセルで、他のファイルをリンクする際、ファイル名だけをオートフィルできませんか?

    たとえば、EXCELで A1に、  〇1.xls  というファイルの  シート1   の   B5 セルを参照した場合          A                  B                C 1  [〇1.xls]シート1!$B$5     [〇2.xls]シート1!$B$5      [〇3.xls]シート1!$B$5 2  [〇2.xls]シート1!$B$5 3  [〇3.xls]シート1!$B$5 4  [〇4.xls]シート1!$B$5 A1セルからオートフィルしたら、A4セルまで、もしくはC3セルまで ファイル名だけ変わる、というようなことはできないでしょうか? ちなみに、EXCEL2003です。 詳しい方いましたら、どうぞよろしくお願いいたします。

  • Excelについて:セルでデータを引っ張るファイル名を一律選択する方法

    教えてください。 Excelで他ファイルからデータを引用する場合、 =[file1.XLS]Sheet1!$B$1 の様に、 []内にファイル名(ここでは"flie1.xls")を入れればそのセルの内容が表示されると思うのですが、 そのファイル名をセルで指定することはできるでしょうか? 具体的にやりたい事は、 同一シート内のセルA1の値が"1234"であった時に、1234.xlsの中のSheet1!$B$1を探して表示する。 "1234"を"2345"に変更すれば、"2345".xlsの中のSheet1!$B$1を表示する。 ということが行いたいのです。 =[$A1$&".XLS"]Sheet1!$B$1 ではだめでした。 可能でしたら教えてください。 よろしくお願いします。

  • セル内の文字からファイル名を呼び出してデータを抽出したい

    よろしくお願いいたします。 Excel2000&WindowsXPを使用しています。 A1セルに表示させている文字からExcelファイルの一部のデータを抽出させる方法はありますか?。 以下のExcelファイルがあります。   A    B   C 1 CD 2 DVD 3 VHS 上記ファイルのA1で表示させている”文字+xls”ファイルの一部のデータをB1セルに表示させたいと思っております。 現在、C1セルには以下のマクロ文を指定しております。 =VLOOKUP("合計",[CD.xls]個数シート!$M$5:$N$500,2,0) 上記のマクロ文でも問題ないのですが、ExcelファイルのA列に表示されている項目は常にランダムであり、必ずしもCD→DVD→VHSといった順番ではないので、[CD.xls]個数シートのCDという部分をA1の項目にランダムに変更したいのです。 これは可能でしょうか?。

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

    エクセルの関数で、セルに書いたファイル名を参照する方法が知りたいです。 エクセル関数初心者レベルです。 別のファイル(開いた状態)に欲しいデータがあって、そのデータを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にて外部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のデータ ------------------------------------------------ 上記を数百のファイル分行いたいのですが、外部ファイルを開いて該当のセルをコピーしていると非常に時間がかかります(といいますか無理でしょう)そこで、これらを数式から指定して、セルにコピーする事により、作業を効率化したいというわけです。 そのような方法がございましたら、教えていただけませんでしょうか。 よろしくお願い致します。

  • ExcelのVBAで、他のExcelファイルのセルのデータを取得

    ExcelのVBAで、他のExcelファイルのセルのデータをファイルを実際に開かずに取得する方法はありますか? Workboks.openを使わずに、具体的にどうすればいいのでしょう? (例)  AAA.xls のセル"C5"に BBB.xls のセル"B3"のデータを入力したい場合。 (AAA.xlsにマクロを起動するボタンがある) ただし、BBB.xlsの最初の3行は空白です。

  • 別excelのデータを引き出す時に、そのexcel名称を可変にしたいと思っています。

    別excelのデータを引き出す時に、そのexcel名称を可変にしたいと思っています。 なるべくマクロを使わないで出来るでしょうか? 例: =VLOOKUP(A1,[B.xls]Sheet1!$A$1:$E$10,4,FALSE) という関数を指定したとします。 [B.xls]Sheet1 この部分をセルA1に入れて、内容を変更することで 引き出し元のファイル&シートを変えたいと思っています。 つまりA1のセルの値を[C.xls]Sheet2にすることで、C.xlsファイルのSheet2からデータを引っ張って来たいのです。 出来るでしょうか? ご存知の方いらっしゃいましたら、宜しくお願い致します。 環境は OS:WINDOWS98 EXCEL2000 です。

  • 結合した文字列をファイル名に使えない

    Excel上に入力されているパス名とファイル名のデータを組み合わせて、 様々なファイルを開いたりコピーしたりするVBAのコードを作ろうとしています。 仮にシート上のA1セルに、C:\Documents and Settings\デスクトップ というパス名 A2セルに URIAGE.xls というファイル名が入力されていたとして、 A1の文字列データとB1の文字列データを結合する場合、 Sub FileSousa()  Dim a As String  Dim b As String  Dim c As String  a = Cells(1, "A").Value  b = Cells(2, "A").Value  c = Chr(34) & a & "\" & b & Chr(34)  Range("A3") = c としてみると、確かにA3セルには、"C:\Documents and Settings\デスクトップ\URIAGE.xls" と出力され、文字列が結合されたことがわかるのですが、その変数cのデータを使って  Workbooks.Open Filename:=c として、そのファイルを開こうとすると、ファイル名が見つからないとしてエラーになります。 ファイルはデスクトップ上の確かにその名前で存在しており、直接 Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\URIAGE.xls" とすると開きます。 " を Chr(34)によって入力したのがいけないのでしょうか、 Workbooks.Open Filename:=××× には、変数を置いてはいけないのでしょうか。 そもそも文字列の結合は、"あ" & "い" → "あい" となるのが基本だと思うのですが、 a="あ"、b="い"、c=a&b → c="あい"として結合した変数cについては、ファイル操作上のファイル名の設定項目として使えないのでしょうか。

  • Excel マクロでファイル名を変数に・・・

    初心者です。検索してもわからなかったので質問です。 下記のようなマクロの処理で「AAA」というファイル名のExcelに「2.xls」からデータをコピーし貼り付けています。    ・    ・ Windows("AAA.xls").Activate Rows("4:4").Select Selection.Insert Shift:=xlDown Windows("2.xls").Activate Range("C6").Select Selection.Copy Windows("AAA.xls").Activate Range("A4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C7").Select Application.CutCopyMode = False Selection.Copy    ・    ・ 今回は「2.xls」ではなく「3.xls」、「4.xls」、・・・といったように違うファイル名で同じ処理を行ないたいので「2」と指定するのではなく「(ファイル名).xls」といった形にしたいのですが、それは可能なのでしょうか。 ご意見宜しくお願いいたします。

専門家に質問してみよう