INDEX+MATCH関数で複数該当の2番目以降を抽出する方法

ここでは、INDEX+MATCH関数で条件に複数該当する中から2番目以降を抽出する方法を解説します。

 

なお、このページで紹介するのは「〇番目を抽出する方法」ですが、以下のページでは「複数すべて」抽出する方法を解説しています。

⇒ 指定条件に合うデータ全てを一覧表からエクセル関数で順に抽出する方法

1.INDEX+MATCHでの抽出は基本的に1番目

知っている方は多いと思いますが、一応確認しておきます。

 

INDEX+MATCH関数の組み合わせで抽出できるのは、基本的に「上から検索して1番最初に一致した行のみ」です。

上の表は、社員の基本情報が載った一覧です。

 

例えば、この表からINDEX関数とMATCH関数の組み合わせで、「正社員の人(E列が〇の人)」を抽出してみます。

ですが、INDEX+MATCHでは「上から検索して一番最初の行」しか抽出できません。

 

ですから、普通の使い方だとどんなに頑張っても、№1の中橋さんしか抜き出せないのです。

 

なお、範囲を2番目以降の人からになるよう手で直す方法もありますが、面倒で現実的ではありません。

2.INDEX+MATCHで2番目の抽出する方法

INDEX+MATCH関数で「複数該当する2番目以降を抽出できる数式」の、形と作り方を見ていきます。

 

2-1.数式の形は

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

=IFERROR(INDEX(抽出列,1/LARGE(INDEX((条件式)/ROW(条件範囲),0),番目)),"")

※ 条件が一つの場合

 

「INDEX+MATCH」と言いながら、MATCH関数がないのはスルーしてください。

 

引数は、「抽出列」、「条件式」、「条件範囲」、「番目」の4つです。

 

2-2.引数の指定の仕方

各引数の指定の仕方を見ていきます。

 

2-2-1.抽出列には「抽出したい列」を指定する

「抽出列」には、「元データのうちで抽出したい列全体」を指定します。

 

例えば、元データからA列を抽出したい場合には「A:A」、D列を抽出したい場合には「D:D」となります。

 

2-2-2.条件式には「条件範囲や条件値」を指定する

「条件式」は、

条件範囲 → 比較演算子 → 条件値

の順で指定します。

 

 

「条件範囲」には、「条件値との一致等を判定する範囲」を「絶対参照で」指定します。

 

特に「絶対参照」とは、「数式を他にコピーしても参照先を変えない状態」のことで、ここでは「セル番号1つに『$』を2つ」付けます。

 

例えば、A1からA11までを判定したい場合には、「$A$1:$A$11」となります。

 

「比較演算子」は「=」や「>」、「<」、「>=」、「<=」、「<>」のどれかを入れます。

 

「条件値」には、そのままですが「条件値」を入れます。

 

条件値の指定の仕方は、後で詳しく説明します。

 

例えば、条件範囲を「A5からA10」、条件を「〇か?」としたい場合、それぞれ次のようになります。

 ・条件範囲:$A$5:$A$10(『$』を4つ付けて絶対参照に)

 ・比較演算子:=

 ・条件値:"〇"

 

つなげると条件式は、

$A$5:$A$10="〇"

となります。

 

2-2-3.条件範囲は条件式と同じく入れる

条件式で指定した「条件範囲」と全く同じに入れます。「絶対参照にする」のも同じです。

 

厳密に言うと、列番号は条件範囲と違っても問題ありません。ただ、全く同じものを入れると覚えたほうが分かりやすいと思います。

 

2-2-4.番目には「抽出したい番目」を入れる

「番目」とは、1番目、2番目などの順番のことです。抽出したい「番目」を、「数値」または「数値の入ったセル番号」で指定します。

 

数値の場合には、「1」、「10」などそのまま入れます。

 

セル番号を入れる場合には、やはり「$」を2つ付けて絶対参照にします。

3.条件値の指定の仕方を確認

条件値は「文字列」、「数値」、「セル番号」などの「値の型」によって指定の仕方が違います。

 

3-1.値を入力する場合

条件値に文字列などの「値」を入力する場合、型によって次のように指定します。

 

(1)文字列

条件値を「"」で囲みます。

 例)条件値が「〇」→”〇"

 

(2)数値

そのまま入力します。

 例)条件値が「100」→100

 

(3)日付

DATEVALUE関数を使い「"」で囲みます。

 例)条件値が「2022年1月1日」→DATEVALUE("2022/1/1”)

 

(4)条件値が時間

TIMEVALUE関数を使い「"」で囲みます。

 例)条件値が「18:00」→TIMEVALUE("18:00")

 

3-2.セル番号を入力する場合

セルに入力された値を条件値にする場合には、条件値の型に関わらず、セル番号をそのまま入力します。

 

ただし、「$」を2つ付けて絶対参照にします。

 

セル番号入力後にF4キーを1回押しましょう。

 例)セルA1に条件値が入っている→$A$1

4.数式の作り方を確認する

例を用いて数式を作ってみます。

先ほども見た社員一覧表です。この表から、「A列が〇の2番目の人」の氏名や年齢、性別を抽出してみます。

 

(1)以下の数式をコピーし、結果を表示したい範囲の左上のセルに貼り付ける

【コピーする数式】

=IFERROR(INDEX(抽出列,1/LARGE(INDEX((条件式)/ROW(条件範囲),0),番目)),"")

※ 複数条件の場合には、この後紹介する数式をコピーし貼り付けます

 

(2)「抽出列」の文字を消し、元データのうち抽出したい列をクリックする

※ 列番号(赤矢印部分)を押すと簡単です

 

(3)「条件式」の文字を消し、まず「条件範囲」を指定する

※マウスの左ボタンを押しながら選択すると簡単です

 

(4)キーボードのF4キーを1回押し、「$」を4つ付ける

※ F4キーはキーの最上段にあります

 

(5)比較演算子を入力する

※ 条件に応じて「=」か「<>」、「>」などの記号を入れます

 

(6)条件値を入力する

※ 条件値の入れ方は、この後詳しく解説します

 

(7)「条件範囲」の文字を消し、「条件範囲」を指定する

 

(8)キーボードのF4キーを1回押し、「$」を4つ付ける

 

(9)「番目」の文字を消し、「番目」を指定する

 

(10)セル番号の場合はF4キーを1回押し、$を2つ付ける

 

(11)Enterキーを押す

 

(12)セルの右下にカーソルを当てる

 

(13)「+」マークになったら右方向に左ドラッグすれば完了

※ 左ドラッグとは、マウスで左クリックを押しながらカーソルを移動させることです

 

結果、セルH5に入れた数式は次のようになります。

=IFERROR(INDEX(B:B,1/LARGE(INDEX(($A$5:$A$14="〇")/ROW($A$5:$A$14),0),$G$5)),"")

 

慣れるととても簡単です。

5.「番目」を変えれば複数抽出することも

この数式は、「『番目』を変えれば条件に該当するデータを複数抽出することが可能」です。

 

数式の他の部分は変えず、「番目」を2や3…などとすることで、2番目に該当するデータも、3番目に該当するデータも抽出できるのです。

 

つまり、該当するデータをいくつでも抜き出すことができるということです。

 

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

 

次のページでは、「複数条件で任意の『番目』を抽出する方法」を解説します。

⇒ 次のページへ行く


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


Top