• ベストアンサー

VLOOKUPの範囲指定

同じことを以前にお聞きしたのですが質問の仕方が分かりにくく解答を下さった 皆様にご迷惑をおかけしました。 今回は画像を添付いたしました。以下の疑問にアドバイスをいただければ幸いです。 なお、マクロを作る関係上、セルの指定をR1C1参照形式にしております。 管理.cells(7,5)に番号を入力すると該当クラスのその番号の生徒氏名が表示されるように、 管理.cells(7,6)にVLOOKUP関数を入れたいのですが、クラスごと別のシートのため、範囲指定が うまくいきません。 以前質問した時に何人かの方に教えていただいたINDIRECT関数を使ってもうまくいきませんでした。 シート名(クラス名)を変数として範囲を指定できないでしょうか。 教えていただければ大変助かります。 よろしくお願いいたします。

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

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

例えば次のようなケースで説明しましょう。 クラス名がAクラス、Bクラス、Cクラスなどとあって、それぞれに同じ名前のシートがあるとします。各シートのA列には管理番号、B列には氏名が入力されているとします。 まとめのシートではA列にシート名(クラス名)を、また、B列に管理番号を入力するとして、該当する方の氏名をC列に表示させるとします。1行目は項目名が入っているとして2行目からデータを入力するとしたらC2セルには次のような式を入力して下方にオートフィルドラッグしておけばよいでしょう。 =IF(A2="","",VLOOKUP(B2,INDIRECT(A2&"!A:B"),2,FALSE)) こうすることでA列やB列に新たなデータを入力すれば指定したクラスの番号に該当する氏名がC列に表示されます。 クラス名すなわちシート名はINDIRECT関数の中でA2&"!A:Bとして使われており指定したクラスのシートのA列、B列を範囲として、A列からB2セルの番号を検索し、2列目すなわちB列の値、氏名、を表示させることになります。 なお、この関数の使用にあたって注意しなければならないのは、例えばクラス名を付けたシートでのAの文字とA列に入力するクラス名のAの文字が一致していない、すなわち片方は全角の文字で、片方は半角の文字であったりすることは避けなければなりません。数値の入力の場合でもそうですね。しばしばエラーの原因としてあげられます。ご参考までに。

sakura54
質問者

お礼

KURUMITO様 画像の添付が不慣れなため遅れる等不手際が多いにもかかわらず、ていねいなご説明感謝いたします。 おかげさまで問題は解決しました。 大変うれしいです。 画像の管理.cells(6,3)にクラス名が入力さまれますので、このセル番地を絶対参照でシート指定の場所に挿入することでクラス名の列を入れることなく名前を表示することができました。 1週間にわたり悩んでいたことがすっきり解決できました。 ほんとうにありがとうございました。

その他の回答 (1)

  • gyouda1114
  • ベストアンサー率37% (499/1320)
回答No.1

セル範囲に名前を定義して使うとうまくいくのではありませんか VLOOKUP関数と絶対参照 http://kokoro.kir.jp/excel/vlookup-absolute.html 名前を利用をご覧ください。 名前定義 http://homepage3.nifty.com/gakuyu/excel/name.html

sakura54
質問者

お礼

gyouda1114様 有益なサイトをご紹介くださりありがとうございました。