並べ替えのされていないコード表から商品名や単価を検索したい
「INDEX」関数と「MATCH」関数を使って検索することができます。
概要
「VLOOKUP」関数はコードとなる最初の列を昇順に並べ替える必要があります。これを並べ替えずにそのままにしておきたい場合、「INDEX」関数と「MATCH」関数の組み合わせで検索することができます。
INDEX | 表やセル範囲から行や列を指定して、セル参照を求めたり、該当位置のデータを求める。セル範囲形式と配列形式の2種類がある。ただし、行番号と列番号から検索するため、VLOOKUPのように、表の見出し名から検索(数式でラベルを使用)することはできない。 |
---|---|
MATCH | 検査範囲にある検索値(データ)から、その範囲で該当する行番号や列番号を求める。表の見出し名から検索できないINDEX関数を補うためにセットとして使われることが多い。なお、検索の方法として「検索値に完全一致」「検索値に完全一致する値がなければ検索値未満の最大値」「検索値に完全一致する値がなければ検索値より大きい最小値」から選択できる。 |
並べ替えていないコード表から検索するには、INDEX関数の配列方式を利用して、MATCH関数で完全一致する値を返す数式を作成します。
=INDEX(<配列>,MATCH(<検査値>,<検査範囲>,<照合の型>),<列番号>)
配列: コード表全体を選択
検索値: 検索対象となるコードが入ったセルを指定
検索範囲: 検索対象となるコードが含まれるセル範囲
照合の型: ここでは完全一致の「0」
列番号: 一致する値が見つかった場合に返す値が入力されている<配列> 内の列番号
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」になる。
|
操作方法
- 求めたいセルを選択し、数式バーの[関数の挿入]ボタンをクリックします。
- INDEX関数を呼び出した後、以下のように「配列、行番号、列番号」を選択して[OK]をクリックします。
- 配列はコード表全体を指定するので「A1:C14」を選択します。
- 検索値は「E3」を選択します。
- 検索範囲はコード表のコード列全体「A1:A14」を選択します。
- [列番号]は2列目を参照するので「2」と入力します。
- 単価を調べる場合は以下の通りになります。
スポンサーリンク
INDEX
コメント
※技術的な質問はMicrosoftコミュニティで聞いてください!