〇 LOOKUP関数:交通機関の料金を走行距離に応じて算出したい。
Q:交通機関の料金表から走行距離に応じた料金を特定したいのですが、どうすればよいでしょう?
A:やり方はいろいろ考えられますが、ここではLOOKUP関数を用いたシンプルな方法を紹介します。
タクシーなど交通機関の料金は、距離に応じて金額が変わります。一般に「3km未満」「3km以上6km未満」などのように距離の区分があり、それに応じて料金が決まります。質問では、走行距離に応じた料金を特定したいとのことです。やり方はいろいろ考えられますが、ここではLOOKUP関数を用いたシンプルな方法を紹介します。
1つの行または列から、他の行または列の同じ場所にある値を返す。
検査値 検索する値を指定する。
検査範囲 検査値を検索する範囲を指定する。
対応範囲 省略可能。値を返す範囲を指定する。
LOOKUP関数にはさまざまな条件や特徴があります。まず、「検査範囲」と「対応範囲」のサイズが同じで1行か1列という制約があります。また、「検査範囲」のデータは昇順に並んでいることが条件になります。
さらに、「検査値」と同じ値が「検査範囲」の中にない場合、検査値以下の最大値が返ります。この特徴を活用することで、走行距離に応じた料金を特定できます。
下の表は、「距離」と「料金」からなるシンプルな料金表です。例えば「距離」が「0」の場合、「0」km以上、次のA3にある「3」km未満を意味し、走行距離がこの間だと料金は「¥800」になります。では、A10に料金を特定したい距離を入力したら、B10には、
=LOOKUP(A10,A2:A7,B2:B7)
と入力して[Enter]キーを押します。「距離」の8kmに対応する料金「¥2,400」が返ります。
料金表を見ると8kmの料金は「6km以上9km未満」に該当します。「検索値」である「8」は、A2:A7の「検査範囲」には見あたりません。そのため「8」以下の最大値である「6」がヒットして、「対応範囲」から同じ場所にある「¥2,400」が返るわけです。
ただ、料金表がちょっと見にくいのが残念です。そこで、下記のように「以上」と「未満」の列を設けてみました。C11の数式は、
=LOOKUP(A11,A3:A8,C3:C8)
とします。「検索範囲」は「A3:A8」にするのがポイントになります。
今回と同様の対応は、VLOOKUP関数を使ってでも行えます。LOOKUP関数は、「検査範囲」と「対応範囲」が連続した表になっている必要がなく、別々に指定できる点がVLOOKUP関数と異なります。