INDEX関数とMATCH関数を使用してデータを検索するには
関数を使用してデータを検索する
最終更新日時:2023/04/03 16:59:09
一覧表から縦横検索するには、検査範囲にある検索値(データ)から、MATCH関数でその範囲で該当する行番号や列番号を求めたうえで、INDEX関数でその一覧表から行番号と列番号を指定して、セル参照を求める数式を作成します。
概要
以下のような一覧表があり、縦と横による検索を行いたい場合、「INDEX」関数と「MATCH」関数を組み合わせて使用します。
A | B | C | D | E | |
---|---|---|---|---|---|
1 | OSとOfficeの対応表 | ||||
2 | OS | Office 2016 | Office 2013 | Office 2010 | Office 2007 |
3 | Windows XP SP2 | × | × | × | ○ |
4 | Windows XP SP3 | × | × | ○ | ○ |
5 | Windows Vista | × | × | ○ | ○ |
6 | Windows 7 SP1 | ○ | ○ | ○ | ○ |
7 | Windows 8 | ○ | ○ | ○ | △ |
8 | Windows 8.1 | ○ | ○ | △ | △ |
9 | Windows 10 | ○ | ○ | △ | △ |
10 | |||||
11 | OS | Windows Vista | |||
12 | Office | Office 2016 | |||
13 | 対応 | ||||
14 |
「INDEX」関数の行番号、列番号にはそれぞれ同じものは何番目にあるかを求めるために「MATCH」関数を使います。
- INDEX
- 表やセル範囲から行や列を指定して、セル参照を求めたり、該当位置のデータを求める。セル範囲形式と配列形式の2種類がある。ただし、行番号と列番号から検索するため、VLOOKUPのように、表の見出し名から検索(数式でラベルを使用)することはできない。
- MATCH
- 検査範囲にある検索値(データ)から、その範囲で該当する行番号や列番号を求める。表の見出し名から検索できないINDEX関数を補うためにセットとして使われることが多い。なお、検索の方法として「検索値に完全一致」「検索値に完全一致する値がなければ検索値未満の最大値」「検索値に完全一致する値がなければ検索値より大きい最小値」から選択できる。
INDEX関数について
INDEX関数は、インデックスを使って、範囲、または配列から抽出した値を返します。セル範囲形式と配列形式があります。
- セル範囲形式
- INDEX(範囲,行番号,列番号,領域番号)
- 配列形式
- INDEX(配列,行番号,列番号)
セル範囲形式は、複数のセル範囲があって、何番目の領域(セル範囲)の値を返すか、といった場合に利用します。セル範囲形式で複数の範囲を指定する場合は、括弧でくくり、それぞれ半角カンマで区切ります。たとえば、「A2:C7」と「E2:G7」の二つのセル範囲があり、1行目2列目のデータを2番目の表(E2:G7)から抜き出す場合は、
=INDEX((A2:C7,E2:G7),1,2,2)
となります。もし領域番号の引数を省略すると1番目のセル範囲(A2:C7)から値を返します。
なお、縦と横による検索を行うには、配列形式を使います。
MATCH関数について
MATCH関数は、INDEX関数と同様、範囲、または配列から抽出した値を返しますが、検索値と同じ相対的な位置を表す数値を求めます。つまり、検査範囲内でその値が何番目にあるのか、というのを調べることができるのです。
MATCH(検索値,検査範囲,照合の種類)
- 検索値
- 検索したい値が入っているセルを指定。
- 検査範囲
- 検索対象となる表のセル範囲を指定。
- 照合の種類
- 検索範囲の中で検索値を検索する方法を指定。省略すると「1」になる。
- 検索値に完全に一致する値を検索:「0」
- 検索値に完全一致する値がない場合、検索値未満の最大値を検索(ただし、データは昇順に並んでいることが必要):「1」
- 検索値に完全一致する値がない場合、検索値より大きい最小値を検索(ただし、データは降順に並んでいることが必要):「-1」
STEP 1 INDEX関数の[配列]を指定する
- 求めたいセルを選択し、[数式]タブの[検索/行列]一覧から[INDEX]をクリックします。
- INDEX関数を呼び出した後、以下のように「配列、行番号、列番号」を選択して[OK]ボタンをクリックします。
-
[配列]はコード表全体を指定するので「A2:E9」を選択し、[行番号]にカーソルを移動します。
STEP 2 INDEX関数の[行番号]をMATCH関数で求める
- 名前ボックスの▼から[その他の関数]を選択します。
-
MATCH関数を選択して[OK]ボタンをクリックします。
- 数式パレットがMATCH関数に変わったら、検索値として対応表の行を参照するデータセル(B11)を選択します。
- [検索範囲]には、一覧表から行見出しセル範囲を指定します。
- [照合の種類]には「0」と入力します。
- INDEX関数に戻るため、数式バーからINDEX関数内をクリックします。
STEP 3 INDEX関数の[列番号]をMATCH関数で求める
-
もう一度[引数の選択]が表示されるので、以下のように「配列、行番号、列番号」を選択して[OK]ボタンをクリックします。
-
[列番号]にカーソルを移動して、名前ボックスから[MATCH]を選択します。
- 数式パレットがMATCH関数に変わったら、検索値として対応表の列を参照するデータセル(B12)を選択します。
- [検索範囲]には一覧表から列見出しセル範囲を指定します。
- [照合の種類]には「0」と入力して[OK]ボタンをクリックします。
- INDEX関数とMATCH関数を組み合わせた数式が入力され、正しく求められました。
次のセクション
INDEX
異なるバージョンの記事
コメント
※技術的な質問はMicrosoftコミュニティで聞いてください!