-
Home »
-
エクセル関数一覧表 »
-
Excel関数の目次 »
-
VLOOKUP関数とCHOOSE関数を組み合わせて使う
作成:2015/12/17
VLOOKUP関数とCHOOSE関数を組み合わせて使う topへ
- VLOOKUP関数で表からデータを検索するのがよく使われますが、入力された値に応じて検索する列を変更したいケースがあります。
ここでは当サイトの掲示板にて質問があった例で説明します。
- データを書き出すSheet1は下図のようになっています。データは次項の「工程」シートから検索します。
F2セルに入力された値に応じてG2セルの内容が変化することになります。
- 「工程」というシートは下図のようになっています。
このシート工程からSheet1のF列に入力された値に応じて、検索する列を変更したい・・・というわけです。
F列で「1」と入力したら、G列の「第1工程」、「2」と入力したら、K列の「第2工程」、「3」と入力したら、O列の「第3工程」と変化します。
- Sheet1のG2セルに入力する数式は
=IF(B2="","",VLOOKUP(B2,工程!$B$1:$O$10,検索列,FALSE))
とすることができます。ここで「検索列」のところが F2セルの値に応じてた値に変化すれば良いことになります。
入力した値に応じて値を返すにはCHOOSE関数が使えます。 詳細は Excel基本講座:CHOOSE関数の使い方 をご覧ください。
元のデータリストB列~O列でG列は6列目、K列は10列目、O列は14列目 になります。
CHOOSE関数の構文は =CHOOSE(インデックス,値1,値2,値3・・・) ですので、
CHOOSE(F2,6,10,14) とすれば期待した値が返されることになります。
- よって、VLOOKUP関数の検索列の部分に当てはめると、
=IF(B2="","",VLOOKUP(B2,工程!$B$1:$O$10,CHOOSE(F2,6,10,14),FALSE)) となります。
- F2セルが空欄のとき CHOOSE関数がエラーとなるので、最初の部分にF2が空欄のときの処理を加える必要があります。
=IF(OR(F2="",B2=""),"",VLOOKUP(B2,工程!$B$1:$O$10,CHOOSE(F2,6,10,14),FALSE))
CHOOSE関数を使わない例 topへ
- IF関数を使って、F2セルの値に応じて対応する列順を入れることもできます。
IF(F2=1,6,IF(F2=2,10,14) といった感じの数式になります。この例ではF2が1,2以外であったら14を返すようになっています。
数式は =IF(OR(F2="",B2=""),"",VLOOKUP(B2,工程!$B$1:$O$10,IF(F2=1,6,IF(F2=2,10,14)),FALSE)) としました。
- 上記では検索する列を変えるのにCHOOSE関数を使いましたが、この例ではCHOOSE関数を使わなくても検索ができます。
F2セルが1のとき6、2のとき10、3のとき14が返ればよいのです、つまり、F2の値に4をかけて、2を加えた値になっているです。
よって、 =IF(B2="","",VLOOKUP(B2,工程!$B$1:$O$10,F2*4+2,FALSE)) とすることができます。
- F2セル(工程番号のところ)に数値ではなく、「第1工程」「第2工程」「第3工程」といった文字が入力されているようなケースでは?
- シート「工程」の見出し(フィールド名)に使われているものと同じなので、MATCH関数を使うことができます。
=IF(OR(F2="",B2=""),"",VLOOKUP(B2,工程!$B$1:$O$10,MATCH(F2,工程!$B$1:$O$1,0),FALSE))
- 関連ページ
スポンサードリンク
よねさんのWordとExcelの小部屋 »
エクセル関数一覧表 »
VLOOKUP関数とCHOOSE関数を組み合わせて使う
PageViewCounter
Since2006/2/27