スポンサーリンク

Excel表で,VLOOKUP関数に複数条件を指定したいケースの対処法

Excel/Wordオフィス製品のTipsまとめへ


VLOOKUP関数には,使いどころがある。

  • この1つの条件なら,必ずこの値。

というふうに,「辞書式」に対処できるような場合であれば,
どんどんVLOOKUPを使うべきだ。

例えば,「北海道なら1」とか。

23-1 VLOOKUP関数
http://www11.plala.or.jp/koma_Excel/c...

  • 得意先を入力すると,それに対応する地区が自動的に入力される。
  • 商品名を入力すると,それに対応する金額が自動的に入力される。

だから,このVLOOKUP関数を使えるような「シンプルなルール」を作ることが,表作成の上で重要になる。


もし,辞書(=条件と値の対照表)のサイズが小さければ,

  • Excelの機能で「セルの書式と値」(条件付きの値)を活用する方法もある。
  • また,IF関数で複数の返り値を分岐判定させるという方法もある。

上記が当てはまらず,辞書のサイズが大きい場合に,VLOOKUPを使うのだ。



こういう「シンプル化」を試みないと,表の作成は複雑になる。


だが,VLOOKUP関数をどうしても適用できないケースが実際に存在する。

VLOOKUPに複数の条件を設定したいケースだ。

どう対処したらよいか。

(1)条件が,「1つの行の中に存在する複数のセルの値」に依存する場合。


VLOOKUPでは,検索条件は1つしか対応できない。

対処法は3つぐらいある。


1番目は,IF関数を使うこと。
これは,「辞書が小さい場合に,IF関数の中に辞書を埋め込む」ことで解決しているわけだ。

VLOOKUP関数で複数の検索値を設定したいのですが - オフィス系ソフト - 教えて!goo
http://oshiete.goo.ne.jp/qa/3174631.html


【エクセルVLOOKUP】複数条件がある場合 | その他MS OfficeのQ&A【OKWave】
http://okwave.jp/qa/q7349761.html


2番目は,複数のセルの値を1つにまとめてしまい,
強引に「検索条件は1つだ」という状況を作り出して,VLOOKUP関数を適用する方法。

複数セルの値を「&」で文字列として結合し,一意な検索条件にしてしまうのだ。

VLOOKUPで複数条件に対応できるという,ちょっとした裏技テクニック。

VLOOKUP関数で複数条件の検索に対応してみる
http://global-wing.com/activity/vlook...


3番目は,ある列のセルの値に応じて,VLOOKUPで参照する場所を変えてしまう,という方法。

利用する辞書を,セルの値に応じて切り替える,というわけだ。


VLOOKUPでは,辞書として参照する部分をセル範囲として指定する。

そのセル範囲を指定する際に,「#シート名!セル番地」のような書き方をして,
シート名の部分に行内のセル参照を埋め込む。

"辞書用シート_"&A1

のような参照方法にしておいて,辞書用のシートを複数作るのだ。

"辞書用シート_車"
"辞書用シート_バイク"
"辞書用シート_自転車"

みたいに。

Excel関数のメモ:外部ブックや別シートを参照する記法
http://computer-technology.hateblo.jp/entry/20131004/p1

(2)条件が,「複数の行の中に存在する複数のセルの値」に依存する場合。

こうなると,関数ではお手上げになる。

Excelの関数は,基本的に「行の中で検索情報が完結すること」を前提としているので,複数行は苦手なジャンルと言う事になる。


例えば,
「1行目から現在の行までの間に,値が出現した順番に,連続した番号を振りたい」
という要望の場合,
この条件は1行内で完結しておらず,複数行に対してとても複雑な条件をかけて算出することになる。

ものすごく「文脈依存」な検索方法になってしまう。

「辞書式の検索」では対応できなくなるのだ。


この場合,対処法は2つ。

マクロでシート全体をスキャンし,VBAで値を付与する。

もしくは,表そのものを手書きで作る。

マスタテーブル(辞書)そのものを作成するような局面なので,手入力もありうるのだ。


結論

VLOOKUPを使えるような「シンプルなシチュエーション」に持ち込むことが,素早い表作成のポイント。



関連する記事:

Excelのハマりがちな便利関数を復習。 6つの中級関数で,セル参照と文字列操作。
http://computer-technology.hateblo.jp/entry/20140202/p1


Kingsoft Officeの問題点・デメリット・欠点。MS Officeと比較した場合の互換性など
http://computer-technology.hateblo.jp/entry/20140502/p1


Excel関数の中級者になるためのリンク集
http://computer-technology.hateblo.jp/entry/20140124/p2


Excelで特定の日付のx年y月後は,EDATE関数でx*12+y月後すればよい
http://computer-technology.hateblo.jp/entry/20140417/p1


Excelで,「今月」を表示する関数
http://computer-technology.hateblo.jp/entry/20140205/p1


Excel/Wordオフィス製品のTipsまとめへ