- ベストアンサー
excel2007 vlookup関数 シート参照
次のような関数をつくって利用しています =VLOOKUP($B$3,'1101'!$1:$1048576,2) ここで利用しているのは、シート名「1101」なのですが アクティブシートのセルに入力した名前に対応して 参照するシートを変更したいのです 上の式の1101のところに、セルA4やindirect(A4)などを いれようとしましたがうまくいきません 調べてみましたがうまく調べられないので 質問することに決めました。 ご指導よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
A4セルに入力したシート名のA列とB列にあるデータから検索するなら、以下のようなセル範囲を文字列で結合したINDIRECT関数を利用してください。 =VLOOKUP($B$3,INDIRECT(A4&"!A:B"),2)
その他の回答 (2)
- nishi6
- ベストアンサー率67% (869/1280)
「$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)
例えばA4セルに参照したいシート名を入力して該当するシートのA1セルの値を表示させるのでしたら次のような式にします。 =INDIRECT("'"&A4&"'!A1") ところでお示しのVLOOKUPの式ですが次のような形になっていることが必要です。 =VLOOKUP(検索値,INDIRECT(A4&"!セル範囲"),列番号,FALSE) セル範囲の指定が間違っていますね。