• ベストアンサー

excel2007 vlookup関数 シート参照

次のような関数をつくって利用しています =VLOOKUP($B$3,'1101'!$1:$1048576,2) ここで利用しているのは、シート名「1101」なのですが アクティブシートのセルに入力した名前に対応して 参照するシートを変更したいのです 上の式の1101のところに、セルA4やindirect(A4)などを いれようとしましたがうまくいきません 調べてみましたがうまく調べられないので 質問することに決めました。 ご指導よろしくお願いします。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

A4セルに入力したシート名のA列とB列にあるデータから検索するなら、以下のようなセル範囲を文字列で結合したINDIRECT関数を利用してください。 =VLOOKUP($B$3,INDIRECT(A4&"!A:B"),2)

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

「$1:$1048576」が微妙ですが、指定シートのA列とB列にデータがあるように想像できます。以下はA列~B列にデータがあり、A列で検索し、一致すればそのB列を出力するとします。   =VLOOKUP($B$3,INDIRECT("'"&A4&"'!"&"A:B"),2,0) 「$1:$1048576」より「A:B」の列名指定が一般的でしょうか。 Indirect関数はその引数に演算子があるとそれを評価(演算)するようです。 「1101」や「Sheet2」はいいはずですが、「Sheet 2」や「Sheet-2」のようにシート名に演算子があると評価されて、その結果そのようなシートがないために参照エラーになります。Excelでは「スペース」は演算子の機能もあります。 そのため、上式では「シングルクォーテーション(Shift+6)」で囲っています。安全のためです。 同一Bookはこれでいいんですが、他Bookを参照する場合、Indirect関数を使う場合、Book名でも同じような問題が発生します。 当方、Excel2000です。

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

例えばA4セルに参照したいシート名を入力して該当するシートのA1セルの値を表示させるのでしたら次のような式にします。 =INDIRECT("'"&A4&"'!A1") ところでお示しのVLOOKUPの式ですが次のような形になっていることが必要です。 =VLOOKUP(検索値,INDIRECT(A4&"!セル範囲"),列番号,FALSE) セル範囲の指定が間違っていますね。

関連するQ&A

専門家に質問してみよう