Deprecated : The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
VLOOKUP関数とCHOOSE関数を組み合わせて使う:Excel関数
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