• 締切済み

エクセル MATCH関数でファイル名等の値をセルから持ってくる方法を教えてください

エクセル初心者です。 MATCH関数で、別ファイルの値を取得しようとしていますが うまくいかないのでどなたか教えていただけませんでしょうか? 下記のように直接ファイル名やシート名を記述するとうまく いくのですが、 [式]  =MATCH(C7,[test.xls]テストシート!C1:C100,0) ファイル名とシート名を変えることがあるので、  セルB5 → test.xls  セルC5 → テストシート として、B5とC5を用いて記述しようと、&や""を使っていろいろと 式に入れてみたのですが、うまくいきません。 途中まではうまくいきそうになっても、C1:C100 の範囲指定で tesx.xlsではなくて自分自身の C1:C100 を参照したりと、 思った結果になりません。 どなたか、教えていただけると助かります。 宜しくお願いいたします。

みんなの回答

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

既回答者には質問のいみが判ったようだが、私にはもやもやして、はっきり意図がわかりにくい。 ーー こう書いたらどうだ。 C7でファイルを選択する(決定する)文字列か数値を入れる。 下記で言えば大阪や神戸など。コードでもありえる。 例 E1:F4 E列  F列 指定語 ファイル名 大阪  A.xls 神戸  B.xls 京都  C.xls 奈良  D.xls それで参照するブックを選択する。 そしてそのブック内の、決まったシートの決まったセルの値を参照したい。 と言うことかな。(シート名まで指定はF列の書き方を工夫すれば出来る。) ーーー であれば、C7で指定したデータに基づいて、VLOOKUP関数で =VLOOKUP(C7,$e$1:$f$4,2,FALSE) これで文字列としてエクセルファイル名が決まる。 MATCH関数とVLOOKUP関数は働きは似ていて、同じような用途に使える。 しかしそのまま=をつけて、セルに書いても (1)フルパス指定の点(ファイル指定でA.xlsの前に着く部分すなわちフォルダ名は同じだと思うから”XXX”で指定し、それとファイル名を&でつなぐ。 セル番地は同じと思うので””の中に書く。 (2)ただの文字列から、「セルを参照する」に働きを変えてくれる 関数INDIRECT関数を思い起こす必要が有る。 Googleで「ndirect関数 使い方」「ndirect関数」でWEB照会すること。 ーー エクセルで他ブックのセル参照は http://www.excel-jiten.net/formula/ref_other_books.html の最後の所をじっくりみて考えて。 ーーー セル参照は他ブックの範囲(多数セル群)は出来なかった思うが 質問者の意図はどうなっているのか?出来ると思ってないですか。

noname#204879
noname#204879
回答No.2

=MATCH(C7,INDIRECT("["&B5&"]"&C5&"!C1:C100"),0) としたらどうなりまりか? ただし、関連ブック(ファイル)をすべて開いておく必要があります。

55nyan
質問者

お礼

早速、ご回答をありがとうございました。 昼間からずっと悩んでいたのですが、教えていただいた式を 入れてましたところ、まるで何事も無かったかのように静かに 求めていた値が現れて嬉しかったです。 本当に助かりました。 どうもありがとうございました。

  • momoo
  • ベストアンサー率65% (34/52)
回答No.1

マクロを使うと上手くいきます。 私が試作したもので解説します。 スクリーンショットの画像も参考にして読んで下さい。 MATCH関数で別ファイルの値を取得するファイルをmihon.xlsとし、 データが入っているファイルを2つ、それぞれ ファイル名:test.xls シート名:テストシート ファイル名:renshu.xls シート名:練習シート としました。 テストシートにはC1セルからC100セルまでデータがあり、 練習シートにもC1セルからC100セルまで別のデータがあります。 mihon.xlsのシートのD5あたりに、 B5のファイル名とC5のシート名を入力後に MATCH関数の中のファイル名とシート名の指示を変更させるための マクロに連結したボタンを作りました。 つまり、B5のファイル名とC5のシート名を入力して[式の変更!]ボタンをクリックすると、 C9セルにあるMATCH関数のなかにあるファイル名とシート名が書き換わります。 [式の変更]ボタンのクリック時のマクロに、この1行を書きます。 Worksheets("Sheet1").Range("C9").Formula = "=MATCH(C7,[" & Range("B5").Value & "]" & Range("C5").Value & "!C1:C100,0)" これで55nyanさんが希望している作動が実現できます。 わからないことがありましたら、補足をお願いします。

55nyan
質問者

お礼

遅い時間にもかかわらず、詳しいご回答をいただいて恐縮です。 マクロはまだやったことがなく、難しそうですがやってみたいと 思います。 取り急ぎ、お礼申し上げます。 いろいろ教えていただいて、どうもありがとうございました。

関連するQ&A

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

    エクセルの関数で、セルに書いたファイル名を参照する方法が知りたいです。 エクセル関数初心者レベルです。 別のファイル(開いた状態)に欲しいデータがあって、そのデータを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のMATCH関数の検査範囲の指定について

    Excelで、指定した値の場所(行番号)を返すというのをMATCH関数を用いてやっているのですが、検査範囲の指定が上手く処理することができないので教えて下さい。 条件---------------------------------------------------------------------------------------------------------------- 2つのExcelファイル、DATA.xlsx と TEST.xlsx を用いる。 DATA.xlsx内に「B19」というシートが存在し、このシート内のB列にある"7777"という値が存在する行番号をTEST.xlsx内のセルに表示させる。 ----------------------------------------------------------------------------------------------------------------------- まず、 =MATCH(7777,[DATA.xlsx]B19!$B:$B,0) で正しい値が返ってくることは理解しています。 この式の中の、B19というシート名について、 この式が存在するシートと同じシートの適当なセル(ここではA33を使うことにします)にB19 という値が存在するとします。このA33のセルにある値を見て値を返す、何がしたいかといいますと、将来参照するシートがB19ではなく例えばB15であったり、B6とした場合、A33のセルの値を変更すればよいというものにしたいのです。 それで、 =MATCH(7777,"[TEST.xlsx]"&$A33&"!$B:$B",0) としてみたのですが、#VALUE!が返ってきます。 何処が間違っているのか?教えてください。 よろしくお願いします。

  • エクセル2000でファイル間セル参照とセル値でファイル名参照

    ロータス123では出来た、元々あるファイルからある数値(セル)を新規ファイルへ参照したい式がエクセルでわかりません。 ファイルは電気検針等毎月使いますが、今月の数値-前月の数値で使用量を計算します。 しかし、検針日(2004年11月)西暦(1つのセル)、月(1つのセル)でこの月の部分を変更することにより前月のファイル(2004-10.XLS)の今月の数値(セル)を2004-11のファイルの前月の数値へ参照させるにはどうしたらいいでしょうか。 ロータスでの式は 「IF($D$2=1,@@("<<c:\検針\"&@STRING($B$2-1,0)&"-12.123>>E2"),@@("<<c:\検針\"&@STRING($B$2,0)&"-"&@STRING(@CHOOSE($D$2,0,12,1,2,3,4,5,6,7,8,9,10,11),0)&".123>>E2"))」でした。(たぶん@CHOOSE($D$2..は「$D$2-1」でもいいかもしれませんが今月-1で1ヶ月前をあらわしてます。@STRING(..は数値を文字列に変換しています。) B2は西暦で、D2は月です。1月の時だけ西暦を-1し、12月分を参照すし、それ以外は、セルの西暦-月をファイル名として参照させています。 別ファイルの参照式は「’(絶対パス)¥[(ファイル名.xls)](シート名)!’(セル)」 で試しましたが、「[ 」以降もセル値を反映させることが出来ませんでした。 「[ 」以降関数を入力しても入力通りの参照ファイルを探しにいきます。 よい式や関数はあるでしょうか。

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

    たとえば、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ファイルのセルの値をVBAで参照したい時

    こんにちは。 Excelで他Excelファイルにあるセルの値をVBAで参照したい時って、 場所をどう指定したらいいのでしょうか。 やろうとしている事ですが、 c:\1.xlsに記述するVBAで c:\2.xlsのsheet1のA1の値を参照して、 それとc1.xlsのsheet1のA1の値が一致した時に、 c:\2.xlsのsheet1のB1の値を、 C:\1.xlsのsheet1のB1に書き出そうとしています。 派遣就業先でAccessで作ればいいものを なぜか社員の方たちでExcelで作ってしまったため、 そのメンテに四苦八苦しています。(笑) ご存知の方ぜひ教えてください。 よろしくお願いします!

  • エクセル関数>参照ファイル名をセルから呼び出す

    別ファイル(ブック)のセルを表示させたいのですが、例えば =[あいうえお.xls]かきくけこ!$A$5 とせずに、 ファイル名は A1セル の文字列を充てる、というようなことは出来ないでしょうか? 関数が分からない人でも、簡単に参照したいファイル名を変えられるようにしたいのです。 よろしくお願い致します。

  • エクセル関数VLOOKUPの範囲の一部をセルで指定

    ファイル名2103.XLSあるとして、その2103.XLSファイルとは別のファイル名集計.XLSに、その2103.XLSファイルから関数VLOOKUPでデータの値を返したい場合、式の範囲には普通は [2103.xls]Sheet1!$A$1:$B$10 と入力されますが、この範囲の一部分をセルで指定できないでしょうか。例えば、ファイル名集計.XLSのA1セルに文字列で"2103"と入力されているとしまして、式の範囲 [2103.xls]Sheet1!$A$1:$B$10 の2103部分を[A1.xls]Sheet1!$A$1:$B$10のような式は出来ないでしょうか。

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

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

  • エクセルで複数のファイルのうちの特定のファイルのセルに計算式を挿入したい

    教えてください。 フォルダに300くらいのファイルがあり シート001.xls~シート300.xlsと名前が付いてます。 シート001.xls~シート100.xlsはセルC3に式A シート101.xls~シート200.xlsはセルC3に式B シート201.xls~シート300.xlsはセルC3に式C と言う風に違った計算式をいれたいのですが、マクロで いっぺんにやる方法は有りませんでしょうか。

  • 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 ではだめでした。 可能でしたら教えてください。 よろしくお願いします。

専門家に質問してみよう