【Excel : Index関数+Match関数の使い方】料金表などの表からあるデータを取り出したい

Excel関数・VBA

どうもnekoshanです。

今回は前回のmatch関数と相性が良く、よく使われるIndex関数の使い方とmatch関数のおさらいをいつつお伝えしていきます。

テンプレートファイルがダウンロードできますので、実際に同じ事をしながら関数を覚えることができるはずです。

テンプレートファイルと当記事はそれぞれ別の端末で操作すると学習が効率的に行えます。

スポンサーリンク

どんな状況で役立つか

index関数は、以下のことからデータを取り出すのによく使われます。

  • 料金表や在庫表、一覧表など
  • 通し番号が付いたリストなど
  • 家計簿の支出カテゴリー(ガソリン代や食費など)からの絞り込み

実際の仕事環境でリストや表から何かを探すことはあると思います。

量が膨大になると普通に探していては時間がかかりますね。ましてやその作業を毎日やっているようなところだと時間をかなり無駄にしています。

Index関数をマスターして仕事をさっさと片付け、余った時間を他のことに有意義に使いましょう。

テンプレートファイルで何をしたいか

架空のホテル名と部屋タイプ毎の料金を表にしたテンプレートファイルを使って、Index関数の使い方を覚えて頂こうと思います。

今回は、ホテル名が「サンホテル」で、部屋タイプが「Twin」ルームの料金を調べます。

まずは目視でサンホテルのTwinルームの料金を見てみましょう。12000円ですね。

ホテル名とTwinをプルダウンで選ぶとその12000円がセルにが出てくるようにしたいと思います(ついでにプルダウンの方法も軽く紹介します)。

Match関数・Index関数でできること

Match関数Index関数
調べたいデータのある行または列番号を取得し、その番号をセルに表示する指定された行または列をもとに交差するセル位置をセルに表示する

ホテルの料金表から部屋タイプに応じた料金を取り出す

ホテル名と部屋タイプ、宿泊料金を入れるセルを予め決めておきました。ダウンロードして頂いたファイルを使いつつ記事を読み進めて行って下さい。

まずは各ホテル名をプルダウンで選べるようにしましょう。

プルダウンを作成

  • ホテル名を入れるセルを選択する
  • リボンの「データ」
  • データツールの「データの入力規制」
  • 設定の入力値の種類を「リスト」に
  • 元の値の欄にインターホテル~ネネホテルまでをドラッグアンドドロップ、
    もしくは、「=$C$5:$C$14」を欄内にコピペする
  • OKボタンを押す

そうすると、ホテル名を入力するセルの右端に「▽マーク」が出現します。

これをプルダウンと言い、▽マークをクリックするとドラッグアンドドロップした範囲がリストとなって表示されます。

同じ要領で部屋タイプのプルダウンを作りましょう。Single~Tripleまで横一列をドラッグアンドドロップです。

サンホテルと Twin をプルダウンから選んでおきましょう。

関数を入れていく

先に入れるイメージを画像でお伝えしておきます。下記画像のイメージを覚えておいて下さい。

さて、宿泊料金欄のセルにIndex関数を入れていきます。画面上の関数の挿入欄に半角入力で「 =index( 」と打ち込みましょう

そうすると「INDEX(配列,行番号,[列番号])」という表示が現れると思います。

配列という文字が太字になっていると思います。ここには料金が書かれた部分をドラッグアンドドロップで入れます。

配列と聞いてイメージしにくいとは思いますが、ここは調べる範囲を指定しています。ドラッグアンドドロップでインターホテル~ネネホテルまでを選択しましょう。D5:G14と記載しても構いません。

次に半角カンマを入力します。そうすると太文字が「配列」から「行番号」に移ったことが分かると思います。

次に行番号を書くのですが、ここで前回お伝えしたmatch関数を入れます。

match関数は調べたい文字列が何行目にあるかを調べ、その行番号を表示する関数でしたね。

つまり、match関数を使えば「サンホテル」の文字列がある行番号を取得してくれるわけです。

「 match( 」と入力し下記表をもとに半角カンマを使って検索値, 検索範囲, 照合の種類を入れていきましょう。

検索値検索範囲照合の種類
E17
ホテル名をプルダウンするセル
C5:C14
インターホテル~ネネホテル
0
完全一致

ここまで入れ終わると、

=INDEX(D5:G14,MATCH(E17,C5:C14,0) となると思います。

半角カンマを入れて、次は列番号を入れていきます。

ここにもmatch関数を使います。行だけでなく列番号も取得できるのがmatch関数の良いところなんです。

先程と同じように「 match( 」と入力し下記表をもとに半角カンマを使って検索値, 検索範囲, 照合の種類を入れていきましょう。

検索値検索範囲照合の種類
E18
ホテル名をプルダウンするセル
D4:G4
Single ~ Triple
0
完全一致

ここまで入れ終わると

=INDEX(D5:G14,MATCH(E17,C5:C14,0),MATCH(E18,D4:G4,0) となっていると思います。

最後に半角の右カッコ「 ) 」を入力して Enter キーを押しましょう。

12000という結果が表示されませんか?出れば関数は完成です。

出なければ、どこかが間違っていますので、よく見直してみて下さい。

完成版の関数は下記の文字の羅列になるはずです。

=INDEX(D5:G14,MATCH(E17,C5:C14,0),MATCH(E18,D4:G4,0))

ホテル名・部屋タイプが未入力の時点では結果を表示させたくない

上記のような場合は、Index関数の前にIF関数を使えば解決することができます。

イメージとしてはこうです。

ifという関数は英語のようにもし~ならばという意味ですが、Excelでも同様です。

カンマを挟んで「条件, 真の場合, 偽の場合」の順に記入していきます。

「 =if(E17=””,””, 」という文字をINDEXの文字前に記入しましょう。

nekoshan先生
nekoshan先生

入力して頂いた文字列の意味ですが、「E17=””」というのはセル内が空白(つまり、ホテル名が入力されていない)の場合という意味です。

 

カンマを挟んで次の””は(セルは空白)、真の場合に適応される答えでホテル名が入力されてない場合は空白を返すよう””で指示を出しています。

 

2つ目のカンマを入れると順番からすれば偽の場合となります。ここはINDEX関数をそのまま適応します。ホテル名が空白でなければ何かしらのホテル名が入力されていることになりますからね。

最後に関数の末尾に「 )」 を入力しエンターキーを押しましょう。

これでホテル名が入ってない場合はセルに結果が表示されないようになりました。

まとめ

いかがでしたでしょうか。

関数を文字に起こしながら設営するのはとても難しく、わかりにくい部分があったかもしれません。

一発でできるようにはならないと思いますが、何度も練習しながら習得して頂ければと思います。

Excel関数は使わなければ、使い方を忘れてしまします。反復練習が大事です。

一緒に頑張りましょう。

タイトルとURLをコピーしました