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