www.wanichan.com

Microsoft Office全般(Excel/Word/PowerPoint/Access/Outlook/OneNote)の使用方法を解説。

並べ替えのされていないコード表から商品名や単価を検索したい

  • このエントリーをはてなブックマークに追加
「INDEX」関数と「MATCH」関数を使って検索することができます。

概要

「VLOOKUP」関数はコードとなる最初の列を昇順に並べ替える必要があります。これを並べ替えずにそのままにしておきたい場合、「INDEX」関数と「MATCH」関数の組み合わせで検索することができます。

INDEX関数とMATCH関数の関係
INDEX表やセル範囲から行や列を指定して、セル参照を求めたり、該当位置のデータを求める。セル範囲形式と配列形式の2種類がある。ただし、行番号と列番号から検索するため、VLOOKUPのように、表の見出し名から検索(数式でラベルを使用)することはできない。
MATCH検査範囲にある検索値(データ)から、その範囲で該当する行番号や列番号を求める。表の見出し名から検索できないINDEX関数を補うためにセットとして使われることが多い。なお、検索の方法として「検索値に完全一致」「検索値に完全一致する値がなければ検索値未満の最大値」「検索値に完全一致する値がなければ検索値より大きい最小値」から選択できる。

並べ替えていないコード表から検索するには、INDEX関数の配列方式を利用して、MATCH関数で完全一致する値を返す数式を作成します。

=INDEX(<配列>,MATCH(<検査値>,<検査範囲>,<照合の型>),<列番号>)

配列: コード表全体を選択
検索値: 検索対象となるコードが入ったセルを指定
検索範囲: 検索対象となるコードが含まれるセル範囲
照合の型: ここでは完全一致の「0」
列番号: 一致する値が見つかった場合に返す値が入力されている<配列> 内の列番号

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」

操作方法

  1. 求めたいセルを選択し、数式バーの[関数の挿入]ボタンをクリックします。
     
  2. INDEX関数を呼び出した後、以下のように「配列、行番号、列番号」を選択して[OK]をクリックします。
  3. 配列はコード表全体を指定するので「A1:C14」を選択します。
  4. 検索値は「E3」を選択します。
  5. 検索範囲はコード表のコード列全体「A1:A14」を選択します。
  6. [列番号]は2列目を参照するので「2」と入力します。
  7. 単価を調べる場合は以下の通りになります。
スポンサーリンク
INDEX
  • このエントリーをはてなブックマークに追加

コメント

※技術的な質問はMicrosoftコミュニティで聞いてください!

▲このページのトップへ