Excel2016ではXLOOKUPやFILTER関数が利用できないため、複数条件に一致するデータをすべて取り出したい場合は少し工夫が必要です。特に同じ日付・同じ車番のデータが複数存在する表では、VLOOKUP関数などの検索関数だけでは最初の1件しか取得できません。
この記事では、Excel2016でも使用できるINDEX関数、MATCH関数、SMALL関数などを組み合わせて、複数条件に一致したデータを順番に抽出する方法を解説します。また、データ管理しやすい表の作り方についても紹介します。
VLOOKUPでは複数データを抽出できない理由
Excelの代表的な検索関数であるVLOOKUPは、条件に一致した最初の1件だけを返す仕組みになっています。
例えば、7月1日・車番222という条件で「伊藤」「佐藤」の2件が存在する場合、VLOOKUPでは最初に見つかった「伊藤」だけが表示されます。
これは関数の不具合ではなく、VLOOKUPの仕様です。そのため、同じ条件のデータをすべて表示したい場合は、別の方法を使う必要があります。
Excel2016で複数条件抽出を行う基本的な考え方
Excel2016では、条件に一致した行番号を取得し、その行番号から必要なデータを取り出す方法が一般的です。
流れとしては以下のようになります。
- 日付と車番の両方が一致する行を探す
- 一致した行番号を小さい順に取得する
- 取得した行番号から名前などのデータを表示する
この処理をINDEX関数とSMALL関数、IF関数などを組み合わせて実現します。
INDEX関数とSMALL関数で複数結果を表示する方法
例えば元データが以下のような構成だとします。
| 列 | 内容 |
|---|---|
| A列 | 日付 |
| B列 | 車番 |
| C列 | 名前 |
右側の一覧表で、指定した日付と車番に一致する名前を上から順番に表示する場合、次のような数式を利用できます。
=IFERROR(INDEX($C$2:$C$100,SMALL(IF(($A$2:$A$100=$F$2)*($B$2:$B$100=$G$2),ROW($C$2:$C$100)-ROW($C$2)+1),ROW(A1))),””)
この数式は配列計算を利用しているため、Excel2016では入力後にCtrlキーとShiftキーを押しながらEnterキーで確定する必要があります。
その後、下方向へコピーすると、条件に一致する2件目、3件目のデータが順番に表示されます。
数式の意味を理解して調整する
数式内のIF部分では、日付条件と車番条件を同時に判定しています。
例えば「7/1」かつ「222」という条件の場合、両方を満たす行だけをTRUEとして扱い、その行番号をSMALL関数で順番に取得しています。
INDEX関数は、その取得した行番号を使って名前列から対応するデータを取り出しています。
この方法なら、同じ条件のデータが10件、20件あっても一覧表示できます。
データ量が多い場合は表形式に変更する方法も有効
車番が20種類、日付が1か月分あるようなデータでは、抽出結果を作るよりも元データを整理して管理する方が便利な場合があります。
おすすめは、元データをExcelの「テーブル形式」に変換する方法です。テーブル化すると、フィルター機能を使って日付や車番ごとに簡単に絞り込みできます。
また、Excel2016には「Power Query」というデータ整理機能も搭載されています。大量データを扱う場合は、関数よりもPower Queryで条件抽出する方が管理しやすいケースもあります。
複数条件検索を行う場合の注意点
日付データは見た目が同じでも、実際には文字列になっている場合があります。その場合、条件一致しない原因になります。
例えば「2025/7/1」と表示されていても、片方が日付データ、もう片方が文字列の場合は検索結果が正しく表示されません。
また、車番についても数字として入力されているデータと文字列として入力されているデータが混在すると一致しない場合があります。
まとめ
Excel2016で日付や車番など複数条件に一致するデータをすべて抽出する場合、VLOOKUPでは最初の1件しか取得できないため、INDEX関数・SMALL関数・IF関数を組み合わせる方法が有効です。
この方法を使えば、同じ条件のデータが複数存在しても、該当する名前や情報を一覧で表示できます。
ただし、データ量が多い場合は関数だけで管理するより、ExcelテーブルやPower Queryを活用した方が効率的です。目的に合わせて最適な方法を選ぶことで、Excel2016でも複数条件検索を快適に行えます。


コメント