2方向(縦・横)に検索して「表引き」する
- 縦(行)方向・横(列)の2方向に検索して「表引き」する方法は複数あります
- 「営業所」と「種類」の2つの条件で2方向に検索して「表引き」する
- VLOOKUP関数(HLOOKUP関数)は、「1方向(単一方向)」にしか検索しません
- 参照関数を組み合わせて複数の条件を参照する方法としてはいくつか方法があります
- 1.INDIRECT関数を使って複数の条件で参照(検索)する
- ※ 数式に「名前」を入力する方法
- ※ LOOKUP関数やMATCH関数は、オプションで「完全一致以外」を選択できます
- 2.VLOOKUP関数とMATCH関数を使って複数の条件で参照する
- 3.INDEX関数とMATCH関数を組み合わせて、複数の条件で参照する
- 4.VLOOKUP関数とINDIRECT関数を使って複数の条件を参照する
縦(行)方向・横(列)の2方向に検索して「表引き」する方法は複数あります
「検索」ですぐに思い浮かぶのはVLOOKUP関数です。
しかし、行方向に配置した項目 "営業所" で「山口県」、列方向に配置した項目 "種類" で「お茶」の両方の条件に合致する "価格" を調べるように2方向に検索して「表引き」することは"VLOOKUP 関数" ではできません。
今回は、「2方向に検索して、表引き」する色々な方法を紹介します。
「営業所」と「種類」の2つの条件で2方向に検索して「表引き」する
営業所「山口」で "縦方向" 、種類「お茶」で "横方向" に検索し、その2方向の交差する点の「4,800円」を表引きするには複数の関数を組み合わせる必要があります。
VLOOKUP関数(HLOOKUP関数)は、「1方向(単一方向)」にしか検索しません
表から条件を指定して検索する際は、通常「LOOKUP関数」を使います。
しかしLOOKUP関数は単一方向にしか検索しないので、表は1列(1行)の場合しか使うことができません。
- VLOOKUP関数は、縦方向(Vertical)に条件を検索
- HLOOKUP関数は、横方向(Horizotal)に条件を検索
参照関数を組み合わせて複数の条件を参照する方法としてはいくつか方法があります
複数の条件(2方向)を参照する方法にはいくつかありますが、それぞれ特徴があるので参照(検索)する条件によって使い分けます。
- INDIRECT関数を使う方法は、あらかじめ検索範囲に "名前" を付けておく必要があります、参照(検索)対象が文字の場合は数式が簡単なので適しています。
- VLOOKUP関数は「列」の指定に「数値」を使うので、あらかじめ「範囲」に名前を付けておく必要がありません。
参照関数を使って表引きをする方法は複数あります
表引きに使用する参照関数には「INDEX関数」「VLOOKUP関数」「MATCH関数」などがあり、それらを組み合わせることでいろいろなやり方で表引きすることができます。
1.「INDIRECT関数」を使う
・ 参照(検索)結果が「完全一致」になる必要がある
・ 参照(検索)の内容が「文字」の場合に適している
2.「VLOOKUP関数」と「MATCH関数」を使う
・ VLOOKUP関数を使えば「参照範囲」に名前を付けなくてもよい
3.「INDEX関数」と「MATCH関数」を使う
・ MACH関数を使うことで、近似値に「最大」と「最小」が使える
4.「VLOOKUP関数」と「INDIRECT関数」を使う
・ 独立している「複数の表」を参照(検索)することができます
VLOOKUP関数とINDIRECT関数を使えば、独立した「複数の表から表引き」できます
VLOOKUP関数とINDIRECT関数を組み合わせることで、「営業所」と「種類」の2つの条件で複数の表から表引きすることができます。
1.INDIRECT関数を使って複数の条件で参照(検索)する
INDIRECT関数を使えば、指定したセルに入力されているセル参照を用いて、間接的なセルの指定をすることができます。
あらかじめ参照(検索)範囲に名前を付けておく必要がありますが、数式が比較的単純になります。
そして、数式自体を変更しないで、数式内で使用しているセル参照を変更することができます。
INDIRECT関数を使う際のルールは下記の通りです。
- セルの指定を「文字列」で間接的に指定します。
- あらかじめ参照範囲に名前を付けます。
※ INDIRECT関数は、名前を付けた範囲を指定できる関数
「選択範囲から作成」の機能を使って、参照範囲に名前を付けます
範囲に名前を付けるには、一つ一つ名前を付ける方法もありますが、「選択範囲から作成」の機能を使えば、選択範囲の「行」や「列」に一括で名前を付けることができます。
- 参照範囲を選択する
- 「数式」タブを選択
- 「選択範囲から作成」を選択
- 選択範囲から名前...ボックスで、「上端行」にチェックを入れる
- 選択範囲から名前...ボックスで、「左端列」にチェックを入れる
それぞれの範囲の「上端行」と「左端列」の内容で名前が付きます
表の一番上の行と一番左の行で、それぞれの範囲に名前が付けられます。
横方向(営業所)、縦方向(種類)それぞれに「名前」が付きました
選択範囲から作成のコマンドを使えば、一度に名前を設定できます。
参照(検索)条件になるセルに名前を付けます
「検索条件にするセル」に名前を付けることにより、数式の内容が分かりやすくなります。
- 営業所の「参照(検索)条件」のセルを選択
- 名前ボックスに「営業所」と入力
- 種類の「参照(検索)条件」のセルを選択
- 名前ボックスに「種類」と入力
INDIRECT関数を使って、セルにつけられた名前を参照(検索)します
INDIRECT関数で「営業所」の範囲(横方向)を指定し、続けて「種類」の範囲(縦方向)を指定することで、「交差する部分」が参照(検索)結果になります。
- 売上を表示するセルに数式を入力します
- 数式「 = INDIRECT ( 営業所 )_INDIRECT ( 種類 ) 」
※ 2つのINDIRECT関数の間に「半角スペース」を入れる点に注意
※ 数式に「名前」を入力する方法
セルや範囲(※ 数式も名前を付けて保存できる) につけた「名前」を数式に使う時は、手入力でもできますが、ファンクションキーの「 F3 」を使うことで簡単に間違えずに入力することができます。
- 登録した「名前を入力したい部分」で、「 F3キー 」を押す
- 表示される「名前の貼り付けボックス」で、数式に入力したい「営業所」を選択する
- 「OK」をクリック
INDIRECT関数を使って複数条件を参照する方法は、あらかじめ参照範囲に名前を付けておく必要がありますが、数式が比較的簡単になります。
INDIRECT関数の欠点は、参照(検索)条件が「完全一致」でなければならない点
INDIRECT関数で参照(検索)する場合は、参照(検索)の結果が「完全一致」である必要があります。
LOOKUP関数やMATCH関数の場合は、検索値に一致するデータが見つからないとき、「検索値を超えない最大値(近似値)」を該当のデータにすることができます。
※ MATCH関数の場合は最小値も可能
参照値に「完全一致」するものがない場合「範囲内の最大値」にしたい
参照する表(範囲)が、下のように利用回数の設定が「10回,30回,50回」のように段階的になっていて、「35回」の利用で参照(検索)する場合のように完全一致するものがない場合、INDIRECT関数では「エラー」になってしまい望んでいる結果になりません。
そのような場合はLOOKUP関数やMATCH関数を使います。
表に該当しない場合は「上の段階」にする
35回利用の場合はは50回に、9,000円の利用金額は10,000円にするルール。
※ LOOKUP関数やMATCH関数は、オプションで「完全一致以外」を選択できます
LOOKUP関数の場合は「最大値」しか指定できませんが、MACH関数の場合は「最大値」と「最小値」を指定することができます。
数式「 =LOOKUP(検索値, 範囲, 列番号, 検索の型)」
- 検索の型を「FALSE」にすれば、検査値に完全一致
- 検索の型を「TRUE」にすれば、検査値以下の最大値になります
数式「 =MATCH(検索値, 検索範囲, 照合の型)」
- 照合の型を「0」にすれば検査値に完全一致
- 照合の型を「1」にすれば検査値以下の最大値
- 照合の型を「-1」にすれば検査値以上の最小値
今回は「完全一致」の条件で説明します。
2.VLOOKUP関数とMATCH関数を使って複数の条件で参照する
VLOOKUP関数の「列番号」を、MATCH関数で求めます。
今回は参照(検索)条件のセルに「名前」を付けましたが、INDIRECT関数とは異なり名前を付けなくても数式の作成は可能です。
- 数式「 =VLOOKUP( 営業所 , E3:E8 , MATCH ( 種類 , E3:H3 , 0 ) , FALSE ) 」
3.INDEX関数とMATCH関数を組み合わせて、複数の条件で参照する
INDEX関数の「行番号」と「列番号」を、MATCH関数で求めます。
縦方向、横方向の両方向にMACH関数を使うので、検索方法のバリエーションが増えます。
数式「 = INDEX ( E3:H8 , MATCH ( 営業所 , E3:E8 , 0 ) , MATCH ( 種類 , E3:H3 , 0 )) 」
4.VLOOKUP関数とINDIRECT関数を使って複数の条件を参照する
VLOOKUP関数とINDIRECT関数を使えば、独立した表を参照することができます。
注意点は「表」の指定を「名前」で行うので、それぞれの「表」に名前を付ける必要があります。
それぞれの表に「名前」を付けて登録します
「名前ボックス」を使って、表(範囲)に名前を付けます
「名前ボックス」を使って、3つに分かれている「表」のそれぞれに名前を付けます。
- 名前を付ける「表」を選択します
- 名前ボックスに、種類「コーヒー」と入力します
- 同じように「お茶」の表、「その他」の表にも名前を付けます
VLOOKUP関数の「範囲」をINDIRECT関数を使って求める
INDIRECT関数を使って「名前を付けた個別の表」を表単位で切り替えることによって、参照(検索)対象が「1列」しかないVLOOKUP関数の欠点を補うことができます。
- VLOOKUP関数の「範囲」になる「表」を、INDIRECT関数を使って求める。
- INDIRECT関数の参照文字列を「種類」にすることで、検索対象の表「お茶」が選択される
数式「 =VLOOKUP ( 営業所 , INDIRECT(種類) , 2 , 0 ) 」
参照関数を組み合わせることで、色々な方法で表引きすることができます。
今回の例では参照(検索)条件が「完全一致」の場合を紹介しましたが、「範囲内での最大値」や「範囲内での最小値」を条件にすることもできます。
その方法については、また別の機会に紹介します。
- 縦(行)方向・横(列)の2方向に検索して「表引き」する方法は複数あります
- 「営業所」と「種類」の2つの条件で2方向に検索して「表引き」する
- VLOOKUP関数(HLOOKUP関数)は、「1方向(単一方向)」にしか検索しません
- 参照関数を組み合わせて複数の条件を参照する方法としてはいくつか方法があります
- 1.INDIRECT関数を使って複数の条件で参照(検索)する
- ※ 数式に「名前」を入力する方法
- ※ LOOKUP関数やMATCH関数は、オプションで「完全一致以外」を選択できます
- 2.VLOOKUP関数とMATCH関数を使って複数の条件で参照する
- 3.INDEX関数とMATCH関数を組み合わせて、複数の条件で参照する
- 4.VLOOKUP関数とINDIRECT関数を使って複数の条件を参照する