重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

次のような関数をつくって利用しています
=VLOOKUP($B$3,'1101'!$1:$1048576,2)

ここで利用しているのは、シート名「1101」なのですが
アクティブシートのセルに入力した名前に対応して
参照するシートを変更したいのです

上の式の1101のところに、セルA4やindirect(A4)などを
いれようとしましたがうまくいきません

調べてみましたがうまく調べられないので
質問することに決めました。
ご指導よろしくお願いします。

A 回答 (3件)

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



=VLOOKUP($B$3,INDIRECT(A4&"!A:B"),2)
    • good
    • 0

「$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です。
    • good
    • 0

例えばA4セルに参照したいシート名を入力して該当するシートのA1セルの値を表示させるのでしたら次のような式にします。



=INDIRECT("'"&A4&"'!A1")

ところでお示しのVLOOKUPの式ですが次のような形になっていることが必要です。

=VLOOKUP(検索値,INDIRECT(A4&"!セル範囲"),列番号,FALSE)

セル範囲の指定が間違っていますね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!