事務作業の省力化や資料作成に役立つ、Excelの使い方を紹介

Excelの機能を最大限に生かして、業務の省力化や経営状況を分析できる資料の作成方法を解説します。

参照関数で、2方向に検索して「表引き」する方法(INDIRECT関数、INDEX関数、MACH関数、VLOOKUP 関数)

2方向(縦・横)に検索して「表引き」する

 

縦(行)方向・横(列)の2方向に検索して「表引き」する方法は複数あります

 「検索」ですぐに思い浮かぶのはVLOOKUP関数です。

 しかし、行方向に配置した項目 "営業所" で山口県列方向に配置した項目 "種類" で「お茶」両方の条件に合致する "価格" を調べるように2方向に検索して「表引き」することは"VLOOKUP 関数" ではできません。

 今回は、「2方向に検索して、表引き」する色々な方法を紹介します。

  

「営業所」「種類」2つの条件で2方向に検索して「表引き」する

 営業所「山口」で "縦方向" 、種類「お茶」で "横方向" に検索し、その2方向の交差する点の「4,800円」表引きするには複数の関数を組み合わせる必要があります。

 

   f:id:k-ohmori9616:20200514105130p:plain

 

VLOOKUP関数(HLOOKUP関数は、「1方向(単一方向)」にしか検索しません

 表から条件を指定して検索する際は、通常「LOOKUP関数」を使います。

 しかしLOOKUP関数単一方向にしか検索しないので、表は1列(1行)の場合しか使うことができません。

  • VLOOKUP関数は、縦方向(Vertical)に条件を検索
  • HLOOKUP関数は、横方向(Horizotal)に条件を検索 

   f:id:k-ohmori9616:20200318090752p:plain

 

参照関数を組み合わせて複数の条件を参照する方法としてはいくつか方法があります

 複数の条件(2方向)を参照する方法にはいくつかありますが、それぞれ特徴があるので参照(検索)する条件によって使い分けます。

 

  •  INDIRECT関数を使う方法は、あらかじめ検索範囲に "名前" を付けておく必要があります、参照(検索)対象が文字の場合は数式が簡単なので適しています。
  •  VLOOKUP関数「列」の指定に「数値」を使うので、あらかじ「範囲」に名前を付けておく必要がありません

 

参照関数を使って表引きをする方法は複数あります

 表引きに使用する参照関数には「INDEX関数」「VLOOKUP関数」「MATCH関数」などがあり、それらを組み合わせることでいろいろなやり方で表引きすることができます。

   1.「INDIRECT関数」を使う

    ・ 参照(検索)結果が「完全一致」になる必要がある

    ・ 参照(検索)の内容が「文字」の場合に適している    

 2.「VLOOKUP関数」「MATCH関数」を使う

    ・ VLOOKUP関数を使えば「参照範囲」に名前を付けなくてもよい

 3.「INDEX関数」「MATCH関数」を使う

    ・ MACH関数を使うことで、近似値に「最大」と「最小」が使え

 4.「VLOOKUP関数」「INDIRECT関数」を使う

    ・ 独立している「複数の表」を参照(検索)することができます

 

VLOOKUP関数INDIRECT関数を使えば、独立した複数の表から表引き」できます

 VLOOKUP関数INDIRECT関数を組み合わせることで、「営業所」「種類」2つの条件で複数の表から表引きすることができます。   

   f:id:k-ohmori9616:20200410090842p:plain

  

1.INDIRECT関数を使って複数の条件で参照(検索)する

 INDIRECT関数を使えば、指定したセルに入力されているセル参照を用いて、間接的なセルの指定をすることができます。

 あらかじめ参照(検索)範囲に名前を付けておく必要がありますが、数式が比較的単純になります。

 そして、数式自体を変更しないで、数式内で使用しているセル参照を変更することができます。

 

INDIRECT関数を使う際のルールは下記の通りです。
  • セルの指定を「文字列」間接的に指定します。
  • あらかじめ参照範囲に名前を付けます。

 ※ INDIRECT関数は、名前を付けた範囲を指定できる関数

 

選択範囲から作成」の機能を使って、参照範囲に名前を付けます

 範囲に名前を付けるには、一つ一つ名前を付ける方法もありますが、「選択範囲から作成」の機能を使えば、選択範囲の「行」や「列」に一括で名前を付けることができます。

  1. 参照範囲を選択する
  2. 「数式」タブを選択
  3. 「選択範囲から作成」を選択
  4. 選択範囲から名前...ボックスで、「上端行」にチェックを入れる
  5. 選択範囲から名前...ボックスで、「左端列」にチェックを入れる

   f:id:k-ohmori9616:20191112123309p:plain

 

それぞれの範囲の「上端行」「左端列」の内容で名前が付きます

 表の一番上の行一番左の行で、それぞれの範囲に名前が付けられます。

   f:id:k-ohmori9616:20200410092717p:plain

 

横方向(営業所)、縦方向(種類)それぞれに「名前」が付きました

 選択範囲から作成のコマンドを使えば、一度に名前を設定できます。

   f:id:k-ohmori9616:20191112124117p:plain

 

参照(検索)条件になるセルに名前を付けます

 「検索条件にするセル」に名前を付けることにより、数式の内容が分かりやすくなります。

  1. 営業所「参照(検索)条件」のセルを選択
  2. 名前ボックスに「営業所」と入力
  3. 種類「参照(検索)条件」のセルを選択
  4. 名前ボックスに「種類」と入力

   f:id:k-ohmori9616:20191112124642p:plain

 

INDIRECT関数を使って、セルにつけられた名前を参照(検索)します

 INDIRECT関数「営業所」の範囲(横方向)を指定し、続けて「種類」の範囲(縦方向)を指定することで、「交差する部分」が参照(検索)結果になります

  1. 売上を表示するセルに数式を入力します
  2. 数式「  INDIRECT ( 営業所 )_INDIRECT ( 種類 )  」

  ※ 2つのINDIRECT関数の間に「半角スペース」を入れる点に注意

   f:id:k-ohmori9616:20200514105216p:plain

 

※ 数式に「名前」を入力する方法

 セルや範囲(※ 数式も名前を付けて保存できる) につけた「名前」を数式に使う時は、手入力でもできますが、ファンクションキーの「 F3 を使うことで簡単に間違えずに入力することができます。

  1. 登録した「名前を入力したい部分」で、「 F3キー 」を押す
  2. 表示される「名前の貼り付けボックス」で、数式に入力したい「営業所」を選択する
  3. 「OK」をクリック  

   f:id:k-ohmori9616:20200318102125p:plain

 

 INDIRECT関数を使って複数条件を参照する方法は、あらかじめ参照範囲に名前を付けておく必要がありますが、数式が比較的簡単になります。

 

INDIRECT関数の欠点は、参照(検索)条件が「完全一致でなければならない点

 INDIRECT関数で参照(検索)する場合は、参照(検索)の結果が「完全一致」である必要があります。

 LOOKUP関数MATCH関数の場合は、検索値に一致するデータが見つからないとき、「検索値を超えない最大値(近似値)」を該当のデータにすることができます。

 ※ MATCH関数の場合は最小値も可能

 

 参照値に「完全一致」するものがない場合「範囲内の最大値」にしたい

 参照する表(範囲)が、下のように利用回数の設定が「10回,30回,50回」のように段階的になっていて、「35回」の利用で参照(検索)する場合のように完全一致するものがない場合INDIRECT関数では「エラー」になってしまい望んでいる結果になりません。

  そのような場合はLOOKUP関数MATCH関数を使います。

 

表に該当しない場合は「上の段階」にする

 35回利用の場合はは50回に、9,000円の利用金額は10,000円にするルール。

   f:id:k-ohmori9616:20200318103001p:plain

 

※ 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 ) 

   f:id:k-ohmori9616:20200514105354p:plain

 

 

3.INDEX関数MATCH関数を組み合わせて、複数の条件で参照する

 INDEX関数「行番号」「列番号」を、MATCH関数で求めます

 縦方向横方向の両方向にMACH関数を使うので、検索方法のバリエーションが増えます。

数式「 = INDEX ( E3:H8 , MATCH ( 営業所 , E3:E8 , 0 ) , MATCH ( 種類 , E3:H3 , 0 )) 」  

   f:id:k-ohmori9616:20200514105430p:plain

 

4.VLOOKUP関数INDIRECT関数を使って複数の条件を参照する

 VLOOKUP関数INDIRECT関数を使えば、独立した表を参照することができます。

 注意点は「表」の指定を「名前」で行うので、それぞれの「表」に名前を付ける必要があります。

 

それぞれの表に「名前」を付けて登録します

   f:id:k-ohmori9616:20191112132336p:plain

 

「名前ボックス」を使って、表(範囲)に名前を付けます

 「名前ボックス」を使って、3つに分かれている「表」のそれぞれに名前を付けます

  1. 名前を付ける「表」を選択します
  2. 名前ボックスに、種類「コーヒー」と入力します
  3. 同じように「お茶」の表、「その他」の表にも名前を付けます

   f:id:k-ohmori9616:20191112132554p:plain

 

VLOOKUP関数「範囲」INDIRECT関数を使って求める

 INDIRECT関数を使って「名前を付けた個別の表」表単位で切り替えることによって、参照(検索)対象が「1列」しかないVLOOKUP関数の欠点を補うことができます。

  1. VLOOKUP関数「範囲」になる「表」を、INDIRECT関数を使って求める。
  2. INDIRECT関数参照文字列「種類」にすることで、検索対象の表「お茶」が選択される 

 数式=VLOOKUP ( 営業所 , INDIRECT(種類) , 2 , 0 )  

   f:id:k-ohmori9616:20200318141931p:plain

 

 参照関数を組み合わせることで、色々な方法で表引きすることができます。

 今回の例では参照(検索)条件が「完全一致」の場合を紹介しましたが、「範囲内での最大値」「範囲内での最小値」を条件にすることもできます。

 その方法については、また別の機会に紹介します。

 

 

k-ohmori9616.hatenablog.com