INDEX+MATCH関数 検索条件のポイント|日付、空白等

ここでは、INDEX+MATCH関数の検索条件(検査値)指定のポイントを解説します。

 

日付や空白、空白以外、文字列、数値といった条件にするためには、どうすればいいかを説明します。

1.数式の形と検査値入力の注意点

INDEX+MATCH関数の数式の形は、次の通りです(行方向への検索の場合)。

=INDEX(配列,MATCH(検査値,検査範囲,照合の種類),列番号)

 

そして、検索する条件値は、この中の「検査値」に入れます。

 

ただし、入れ方は「指定の仕方」と「条件値の型」で違ってきます。

 

指定の仕方とは、「数式内に直接条件値を入力する」か、「条件値を入れたセルを参照する」かといったことです。

 

条件値の型とは、条件値が「文字列」か「数値」か「日付」か…といったことです。

 

まずは、なんでもそのまま入力すればいいわけではない、ということに注意しましょう。

2.数式内に直接条件値を入力するケース

始めに、「数式に条件値を直接入力する」ケースから見てみます。

 

2-1.日付の場合

INDEX+MATCH関数の条件で、日付を数式内に直接入力する場合のポイントは「DATEVALUE関数を使う」 ことです。

 

この関数を使わずに「"4/1"」などとしても、うまく検索されません。

 

2-1-1.DATEVALUE関数とは

DATEVALUE関数は「日付データをシリアル値に変換する」関数です。

 

数式の形は、次の通りです。

=DATEVALUE(日付文字列)

 

日付文字列は、文字列状態の日付を指定します。

 

2-1-2.数式全体の形は

すると、数式全体の形は、次のようになります。

=INDEX(配列,MATCH(DATEVALUE(日付文字列),検査範囲,照合の種類),列番号)

 

では、一つ例を見てみましょう。

上の表から、B列の開催日を検査範囲として、「2020年4月1日」の2列目を値を抜き出したい時、数式は次のようになります。

=INDEX(B2:C7,MATCH(DATEVALUE("2020/4/1"),B2:B7,0),2)

 

各引数の値
  • 範囲:B2:C7
  • 検査値:DATEVALUE("2020/4/1")
  • 検査範囲:B2:A7
  • 照合の種類:0
  • 列番号:2

 

このようにすれば、INDEX+MATCH関数で日付を条件にすることができます。

 

2-2.空白を条件値にする方法

条件値を「空白」にするためのポイントは「MATCH関数の検査値に『TRUE』を、検査範囲にINDEX関数を使う」ことです。

 

検査値を「""」としても、#N/Aエラーになってしまいます。

 

2-2-1.数式全体の形は

数式全体の形は、次のようになります。

=INDEX(範囲,MATCH(TRUE,INDEX(検査範囲="",0),0),列番号)

 

では、一つ例を見てみます。

上の表から、B列の都道府県名を検査範囲として、空白のセルの2列目を値を抜き出したい時、数式は次のようになります。

=INDEX(B2:C7,MATCH(TRUE,INDEX(B2:B7="",0),0),2)

 

各引数の値
  • 範囲:B2:C7
  • 検査範囲:B2:A7
  • 列番号:2

 

このようにすれば、INDEX+MATCH関数で空白を条件にすることができます。

 

2-3.空白以外を条件値にする方法

条件値を「空白以外」にするためのポイントは「MATCH関数の検査値に『FALSE』を、検査範囲にINDEX関数を使う」ことです。

 

つまり、空白と同じような数式で、検査値だけ「FALSE」に変えるといいのです。

 

2-3-1.数式全体の形は

数式全体の形は、次のようになります。

=INDEX(範囲,MATCH(FALSE,INDEX(検査範囲="",0),0),列番号)

 

では、一つ例を見てみます。

上の表から、B列の都道府県名を検査範囲として、空白のセルの2列目を値を抜き出したい時、数式は次のようになります。

=INDEX(B2:C7,MATCH(FALSE,INDEX(B2:B7="",0),0),2)

 

各引数の値
  • 範囲:B2:C7
  • 検査範囲:B2:A7
  • 列番号:2

 

このようにすれば、INDEX+MATCH関数で空白以外を条件にすることができます。

 

2-4.文字列を条件値にする方法

条件値を文字列にするためのポイントは「文字列を『"』で囲む」ことです。

 

2-4-1.数式全体の形は

数式全体の形は、次のようになります。

=INDEX(配列,MATCH("文字列の検査値",検査範囲,照合の種類),列番号)

 

では、一つ例を見てみます。

上の表から、B列の都道府県名を検査範囲として、「岩手県」の2列目を値を抜き出したい時、数式は次のようになります。

=INDEX(B2:C7,MATCH("岩手県",B2:B7,0),2)

 

各引数の値
  • 範囲:B2:C7
  • 検査値:"岩手県"
  • 検査範囲:B2:A7
  • 照合の種類:0
  • 列番号:2

 

このようにすれば、INDEX+MATCH関数で文字列を条件にすることができます。

 

2-5.数値を条件値にする方法

条件値を数値にするためのポイントは「そのまま入れる」ことです。

 

2-4-1.数式全体の形は

数式全体の形は、次のようになります。

=INDEX(配列,MATCH(数値の検査値,検査範囲,照合の種類),列番号)

 

では、一つ例を見てみます。

上の表から、A列の№を検査範囲として、「3」の2列目を値を抜き出したい時、数式は次のようになります。

=INDEX(A2:C7,MATCH(2,A2:A7,0),2)

 

各引数の値
  • 範囲:A2:C7
  • 検査値:3
  • 検査範囲:A2:A7
  • 照合の種類:0
  • 列番号:2

 

このようにすれば、INDEX+MATCH関数で数値を条件にすることができます。

3.条件値を入れたセルを参照するケース

最後に、条件値を入れたセルを参照(セル参照)するケースを確認します。

 

結論から言うと、セル参照の場合には条件値がどの形であっても「検査値にセル番号をそのまま入れる」でOKです。

 

数式全体の形は、次のようになります。

=INDEX(配列,MATCH(セル番号,検査範囲,照合の種類),列番号)

 

では、一つ例を見てみます。

上の表から、A列の№を検査範囲、条件値「3」を入れたセルA9を検査値として、その2列目を値を抜き出したい時、数式は次のようになります。

=INDEX(A2:C7,MATCH(A9,A2:A7,0),2)

 

各引数の値
  • 範囲:A2:C7
  • 検査値:A9
  • 検査範囲:A2:A7
  • 照合の種類:0
  • 列番号:2

 

このようにすれば、INDEX+MATCH関数でセルに入った値を条件にすることができます。

 

以上、参考になれば幸いです。

 

次のページではINDEX+MATCH関数で「含む」条件の指定の仕方を解説しています。よかったら参照してください。

→ 次のページへはこちら

 


口コミ・評判のいいExcel本の紹介】


Top