【エクセル初心者】表の縦・横の項目を指定して値を検索する(INDEX、MATCH)
エクセルで、距離・大きさ別の送料の料金表を作っているときに、その表から、距離・大きさから送料を計算する方法を考えてみましょう。
今回は、次の図のC2セルに、距離が「短距離」、大きさが「中」にあたる料金「700」を表示する数式を入れてみたいと思います。
この記事の目次
INDEX関数とMATCH関数を組み合わせる
今回のようなケースでは、INDEX関数とMATCH関数を組み合わせて使いましょう。そうすることで、縦軸・横軸の両方から必要な値を検索することができます。
INDEX関数とは?
INDEX関数は、指定したセル範囲の中から、指定した行・列の値を表示させることができます。
いくつか例を見てみましょう。
A1~B3セルの1行2列目の値を表示する
A1~C4セルの4行2列目の値を表示する
今回の送料を計算する数式では、INDEX関数の引数を次のように指定しています。
引数 | 意味 | 指定した値・数式 |
---|---|---|
1つ目の引数 | 抽出元となるセル範囲 | $B$8:$D$9 |
2つ目の引数 | 抽出する行 | MATCH(A2,$A$8:$A$9,0) |
3つ目の引数 | 抽出する列 | MATCH(B2,$B$7:$D$7,0) |
2つ目の引数、3つ目の引数に、数字を直接入力せずに、MATCH関数を使って行・列を計算しているのが、今回の数式のポイントです。
抽出する行をMATCH関数で指定する
MATCH関数は、次のように「①指定した値」が「②指定した範囲」の何番目にあるかを計算する関数です。
これも、いくつか例を見てみましょう。
①「b」が②「A1~A3セル」の中で何番目にあるかを表示する
①「e」が②「A1~C1セル」の中で何番目にあるかを表示する
MATCH関数を使うときには、次の2点に注意してください。
- ②で指定する範囲は「1行×n列」または「n行×1列」のどちらかの範囲を指定する
- 3つ目の引数は、特別な理由がない限り「0」を指定する
送料の区分をMATCH関数で計算してみる
冒頭で紹介した送料を計算する式では、INDEX関数の2つ目の引数、3つ目の引数にMATCH関数を入れていました。
この2つのMATCH関数の動きを個別に考えてみましょう。
指定した「距離」が「何行目」にあるかを計算する
まず、2つ目の引数で指定している「MATCH(A2,$A$8:$A$9,0)」を考えてみます。
この関数では、A2セルの値(=「短距離」)が、A8~A9セルの何番目にあるかを計算しています。
たとえば、この数式をD2セルに入力してみると「1」と表示されます。
A2セルで指定した「距離」がA8セル(=A8~A9セルの1番目)に入っているので、「1」という値が得られるのです。
指定した「大きさ」が「何列目」にあるかを計算する
次に、3つ目の引数で指定している「MATCH(A2,$A$8:$A$9,0)」を考えてみましょう。
これも、考え方はまったく同じで、B2セルの値(=「中」)が、B7~D7セル何番目にあるかを計算しています。
「中」という値はC7セル(=B7~D7セルの2番目)に入っているので、この数式をE2セルに入力すると「2」という値が得られます。
INDEX関数とMATCH関数を組み合わせる
先ほど見た通り、2つのMATCH関数で、送料の表の「何行目」「何列目」を見ればいいかが計算できました。
あとは、INDEX関数と組み合わせれば、送料の計算ができることになります。
先ほど、MATCH関数で、D2セル、E2セルに行、列を表示させたので、それを使って、INDEX関数の数式を組むと次のようになります。
慣れないうちは、このようにMATCH関数の結果を別のセルに表示したほうが理解しやすいかもしれません。
MATCH関数の結果を別セルに表示
慣れてきたら、次のように、INDEX関数の中にMATCH関数を入れてしまってもいいでしょう。
すると、一番最初に紹介した数式ができあがります。
INDEX関数の中にMATCH関数を入れる
まとめ
表から、縦・横の項目を指定して、値を検索する必要があるときには、INDEX関数とMATCH関数を組み合わせて使いましょう。