みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの関数

=VLOOKUP(A1,B10:C100,2,FALSE)
の関数において条件により参照するセル、セルの範囲を変更したいです。
参照するセル A1 や B10:C100 を変数に置き換えることはできますか?
つまり
A1を参照する場合やその他のセル(例えばA2)を参照したり
B10:C100の範囲を例えばB101:C200に変更させたいです。

投稿日時 - 2015-01-05 17:15:11

QNo.8881080

すぐに回答ほしいです

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

方法はいくつかありますけど、条件をどうするかで変わりますね。

INDIRECT関数でどうでしょうか?

=VLOOKUP(INDIRECT("A"&E1),INDIRECT("範囲"&E2),2,FALSE)

として、E1に1とか2と入力することで参照セルを変更できます。

セルの範囲の場合は、B10:C100に"範囲1"、B101:C200に"範囲2"と名前付けしてもらえれば
E2の入力変更で同様に変更できます。

投稿日時 - 2015-01-05 18:04:49

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

>A1を参照する場合やその他のセル(例えばA2)を参照したりB10:C100の範囲を例えばB101:C200に変更させたいです。
検査値のセルと範囲のセルをどのような条件で変更するかを提示しないと具体的な回答は無理かと思います。
考え方としてはADDRESS関数で算出されたセルのアドレスをINDIRECT関数で指定する方法になるかと思います。
=VLOOKUP(INDIRECT(ADDRESS(行番号,列番号,4),ADDRESS(行番号,列番号,4)&":"&ADDRESS(行番号,列番号,4),2,FALSE)
ADDRESS関数の第3引数の4は相対参照が返ります。
=ADDRESS(2,1,4) → A2
=ADDRESS(101,2,4)&":"&ADDRESS(200,3,4) → B101:C200
其々のADDRESS関数で行番号と列番号はあなたの考えている数式で返り値を与えてください。

投稿日時 - 2015-01-05 18:51:51

ANo.3

Indirectではだめですか?

indirectで特定セルの値を参照させることは可能です。

例えば↓
http://pc.nikkeibp.co.jp/pc21/tech/excel36/27/

投稿日時 - 2015-01-05 17:58:38

ANo.2

どのような場面なのかが具体的にイメージ出来ないので、
一般的な事書きますね。
IF関数と組み合わせてみたらいかがでしょうか。

=IF(条件1,VLOOKUP(...),IF(1jouken 2,VLOOKUP(...),...)
とします。
ただし、IFの中に使えるIFの数には限りがあったので、あまりに条件が多い場合は、
不向きですね。

もしくは、列を増やして、そこに細かい場合分けをしておいて、
最後に、非表示にするというのも手です。
個人的には、こっちの方が後から見てもわかりやすいし好きです。

投稿日時 - 2015-01-05 17:33:00

補足

言葉足らずですみません。
IFはよく使っています。

今回は指定したい範囲が一定ではないので変数に代入したいです。

投稿日時 - 2015-01-05 17:54:37

ANo.1

IF関数を組み合わせるか両方の条件でのVLOOKUPを2か所に表示するようにするのはいかがでしょう。

投稿日時 - 2015-01-05 17:31:21

あなたにオススメの質問