関数で複数条件で検索して複数データを取り出す:Excel関数の技

スポンサードリンク


更新:2025/3/30;作成2009/9/14

Filter関数を使って複数データを取り出す[Excel for Microsoft365,Excel2021,Excel2024] 配列数式を使って複数データを取り出す[Excel2016やExcel2013以前]
作業列を使って複数データを取り出す
INDEX関数とMATCH関数で取り出す方法[Excel2016やExcel2013以前] XLOOKUP関数とSEQUENCE関数で取り出す方法[Excel for Microsoft365,Excel2021]
VLOOKUP関数で取り出す方法[Excel2016やExcel2013以前]

サンプルデータ

Filter関数を使う

AND条件の場合です

OR条件の場合です

配列数式を使う

数式の解説

作業列を使う方法

INDEX関数とMATCH関数で取り出す方法

  1. 条件と一致した行に連番を入れます。
    E3セルに=IF(B3=$G$2,COUNTIF($B$3:B3,$G$2),"")と入力して、下方向へE12セルまでコピーします。
    B3セルとG2セルが同じなら、同じデータはB3セルから数えて何個目かを表示しています。
    COUNTIF($B$3:B3,$G$2)の範囲が絶対参照相対参照になっています。
    =IF(B3=$G$2,COUNTIF($B$3:B3,$G$2),"") はB3セルとG2セルが同じでないときは空白にしています。
  2. G5セルに入力した数式を右方向、および下方向へコピーすると完成です。
    1. G5セルに=IF(MAX($E$3:$E$12)<ROW(A1),"",
      INDEX(B$3:B$12,MATCH(ROW(A1),$E$3:$E$12,0))) と入力します。
    2. G5セルを選択し、フィルハンドルを右方向へ、I5セルまでドラッグして数式をコピーします。
    3. G5:I5セルを選択して、フィルハンドルを下方向へドラッグして数式をコピーします。
      下方向へは必要なだけコピーします。一致するデータが表示しきれるだけの行にあらかじめコピーします。

XLOOKUP関数とSEQUENCE関数で取り出す方法

  1. 作業列には、上記と同様に、
    E3セルに =IF(B3=$G$2,COUNTIF($B$3:B3,$G$2),"") と入力して、下方向へE12セルまでコピーします。
  2. G5セルには =XLOOKUP(SEQUENCE(5),$E$3:$E$12,B3:B12,"") と入力します。
    SEQUENCE(5)は連続した数値の配列(1,2,3,4,5)を作成しています。該当するデータが5個程度を想定しています。多くのデータが該当すると思われる場合はこの値を調整してください。
  3. G5セルの数式を H5セル、I5セルにコピーします。
    H5セルの数式は =XLOOKUP(SEQUENCE(5),$E$3:$E$12,C3:C12,"") となります。
  4. I5セルの数式は =XLOOKUP(SEQUENCE(5),$E$3:$E$12,D3:D12,"") となります。

作業列を使う(2)

VLOOKUP関数で取り出す方法

  1. データの左端列、B列に作業列を設けます。
    B3セルには =IF(C3=$G$2,COUNTIF($C$3:C3,$G$2),"") と入力して、下方向へB12セルまで数式をコピーします。
  2. G5セルには =IFERROR(VLOOKUP(ROW(A1),$B$3:$E$12,COLUMN(B1),FALSE),"") と入力します。
    この数式を横方向へ I5セルまでコピーし、さらに、G5:I5セルを選択して、下方向へデータが抽出されると想定される行までコピーします。
    VLOOKUP関数では検索値が見つからないとエラーになるので、IFERROR関数でエラー処理をしています。
    VLOOKUP関数の引数の列番号は数式をコピーするのを前提にCOLUMN関数を使って 連番(2,3,4)を生成するように小細工をしています。

複数条件の場合です

スポンサードリンク



Home »  エクセル関数の技 »  関数で複数条件で検索して複数データを取り出す

 PageViewCounter
 Counter
 Since2006/2/27