ITライター 立山秀利
Excelで売上の範囲に応じて、4段階にランク分けをしたいとする。そのような場合はVLOOKUP関数の「近似一致」での検索を利用すると効率的だ。
売上の実績に応じてランク分けをしたいケースはしばしばある。例えば図1顧客管理の表では、B4セル以降に、顧客ごとに過去3年間の売上の累計データが入力してある。そして、以下の基準値を示した対応表を基に、売上に応じて顧客をA~Dの4段階にランク付けしたいとする。
図1
また、ランクの基準値を示した対応表は以下のように定義した。
売上(百万円)
----------------
500以上 A
300以上 B
100以上 C
100未満 D
このような売上の数値に応じたランク付けは、IF関数を使えばできないこともないが、IF関数がいくつも入れ子になるなど、数式が非常に長くて複雑になり、使いづらい表となってしまう。また、もし、ランクの段階を増やす必要が生じた場合、いっそう複雑さは増す。
この場合、IF関数ではなく、VLOOKUP関数を使うのが効率的だ。完全一致ではなく、近似一致で検索すれば、数値の範囲で検索し、ランクを抽出できる。
まずはランク付けの基準値を示した対応表を用意。今回は図2のように、E3セル以降に用意した。対応表の1列目には、基準となる数値を昇順で並べる。この1列目に入れた数値以上、同じ1列目で次の行の数値未満の範囲で検索が行われる。例えば図2のE6セルなら、値は300が入力されており、次の行のE7セルには500が入力されている。そのため、300以上500未満の数値が検索される。2列目には対応するランクの文字列を入れておく。
注意が必要なのは、もっとも低いDランクの数値だ。今回のランク分けでは、Dランクは上記表では100未満と記しているが、0以上100未満と同義なので、1列目の数値には0を指定する。
図2
対応表を用意できたら、ランク付けを行うVLOOKUP関数の登場だ。VLOOKUP関数の数式の定義をおさらいしよう。
------------------------------------------
=VLOOKUP(検索値,検索範囲,列番号,検索方法)
------ -------- ------ --------
( B4 ,$E$4:$F$7, 2 , TRUE )
------------------------------------------
引数「検索値」には、B4セルの売上でランク付けを行いたいので、B4セルを指定する。引数「検索範囲」には、対応表のセル範囲であるE4~F7セルを指定。後ほどオートフィルで下方向のセルにコピーすることを踏まえ、コピーする際にセル範囲がずれないよう、絶対参照で指定しておこう。引数「列番号」は、対応表の2列目にあるランクの文字列を抽出したいので、2を指定すればよい。
そして、引数「検索方法」にはTRUEを指定するのがポイントだ。以前VLOOKUP関数を紹介した際(※前回のVLOOKUP関数記事へのリンク)、引数「検索方法」にはFALSEを指定した。FALSEを指定すると完全一致で検索が行われるので、引数「範囲」の表の1列目とまったく同じ数値しか検索されない。しかし、今回のようにTRUEを指定し、近似一致で検索すると、先述のように「~以上~未満」の範囲に含まれる数値なら、すべて検索されるようになる。
実際にC4セルに入力すると、「B」のランクが抽出される(図3)。引数「検索値」に指定したB4セルの値は371である。300以上500未満の数値なので、E6セルの300が検索され、「B」が抽出された。
図3
後はC5セル以降にオートフィルなどでコピーすれば、すべての顧客のランク付けができる。
VLOOKUP関数を使った方法だと、数式自体がシンプルで見やすく扱いやすい。その上、もしランクの段階を増やす必要が生じても、対応表に追加し、引数「範囲」の範囲を広げるだけで済み、編集作業の手間と時間も大幅に少なくなる。数値の範囲でランク付けをするならVLOOKUP関数の近似一致による方法を用いた方が大幅に効率的だ。 VLOOKUP関数を利用してランク分けを容易に実施することで、売上実績に応じた営業活動も迅速に行うことができるだろう。
立山秀利(たてやま・ひでとし)
カーナビのソフトウェア開発、Webプロデュース業務を経て、現在は、システムやネットワーク、Microsoft Officeを中心に執筆中。 主な著書に『Excel VBAのプログラミングのツボとコツがゼッタイにわかる本』などがある。
(監修:日経BPコンサルティング)