Excel表で,VLOOKUP関数に複数条件を指定したいケースの対処法
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