• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelのMATCH関数の検査範囲の指定について)

ExcelのMATCH関数の検査範囲の指定について

このQ&Aのポイント
  • ExcelのMATCH関数を使用して、指定した値の場所(行番号)を取得する方法について学びます。
  • MATCH関数の検査範囲の指定方法について具体的な例を挙げながら説明します。
  • シート名を動的に指定する方法や、別のファイルを参照する方法についても解説します。

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

  • ベストアンサー
  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.3

いくつかあります。 1つ目は「"」で囲ったものは文字列にしかならないということです。 A1に「10」と入力して B1に「=SUM("A1")」としても参照してくれな いのと同じです。文字列をセルの参照に変換する処理が抜けています。 次にシート名について。数字を含むシート名などによっては参照する 際「'」で囲む必要があります。「='B19'!A1」のように。 なので今の情報だけで考えるなら =MATCH(7777,INDIRECT("’[TEST.xlsx]"&$A33&"’!$B:$B"),0) こうなります。 ただし INDIRECT関数は参照元のファイルを開いておかないと使え ない関数です。使い方を考えた場合に本当にこれで上手く利用でき るのかどうかについては疑問を感じます。 また INDIRECTは揮発性関数です。重い処理の関数と組み合わせる のは避けた方がいいと思います。表全体の運用に影響します。 INDIRECTを使わず それぞれのシートに対して全て検索したものを どこかに表示させて その中から該当するシートのデータを参照した 方がまだましくらいです。

Hukkin_Devil
質問者

お礼

回答有難うございます。お礼が遅くなり申し訳ございませんでした。何度も御礼コメントを送ろうとしたのですが、エラーで送れませんでした。 詳しい解説に加えアドバイスも下さりありがとうございます。勉強になりました。 ありがとうございました。

その他の回答 (2)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 INDIRECT関数でシート名を指定する際において、例えば Sheet1 (2) の様なコピーシートや 2015年8月 等の様な「数字から始まっているシート名」を持つシート、及び B19 等の様な「数字で終わっているいるシート名」を持つシートを指定するためには、 INDIRECT("'[DATA.xlsx]Sheet1 (2)'!$B:$B") や INDIRECT("'[DATA.xlsx]B19'!$B:$B") の様に「'」で囲んだ形で指定しなければなりません。  一方、例えば Sheet1 の様な「コピーシートでも、『数字から始まっているシート名』を持つシートでも、『数字で終わっているいるシート名』でも無いシート」の場合は、 INDIRECT("[DATA.xlsx]Sheet1!$B:$B") の様に「'」で囲んでいない形でも、 INDIRECT("'[DATA.xlsx]Sheet1'!$B:$B") の様に「'」で囲んだ形でも、どちらの形式で指定しても構いません。  ですから、A33セルに、コピーシートのシート名や「数字から始まっているシート名」及び「数字で終わっているいるシート名」が入力されている場合にも対応するためには、次の様にする必要があります。 =MATCH(7777,INDIRECT("'[DATA.xlsx]"&A33&"'!B:B"),0)  但し、これだけでは「A33セルに誤ったシート名が入力されている場合」や「指定されたシートのB列に7777という値が入力されているセルが存在しなかった場合」にはエラーとなってしまいますので、次の様にされた方が良いと思います。 =IF(A33="","",IFERROR(MATCH(7777,INDIRECT("'[DATA.xlsx]"&A33&"'!B:B"),0),IF(ISREF(INDIRECT("'[DATA.xlsx]"&A33&"'!B:B")),"(該当データ無し)","(該当シート無し)")))

Hukkin_Devil
質問者

お礼

回答有難うございます。お礼が遅くなり申し訳ございませんでした。何度も御礼コメントを送ろうとしたのですが、エラーで送れませんでした。 詳しい解説ありがとうございます。今回のことだけではなく、今後にも役立ちます。 ありがとうございました。

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

INDIRECT関数を使って範囲を指定しないとエラーになります。 =MATCH(7777,INDIRECT("[TEST.xlsx]"&$A33&"!$B:$B"),0) 検証していませんので、駄目なときはエラーの種類を補足してください。

Hukkin_Devil
質問者

お礼

回答有難うございます。お礼が遅くなり申し訳ございませんでした。何度も御礼コメントを送ろうとしたのですが、エラーで送れませんでした。 教えて頂いたとおりにしましたら、上手くいきました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう