ExcelやスプレッドシートのVLOOKUP関数の弱点の一つとして、「検索条件に一致するセルが複数該当する場合は、一致するセルの中で一番上にあるセルを抽出してしまう」という事象がネックになることがよくあります。
検索結果のデータが複数ある場合はそれぞれ抽出したい場合もありまよね。
そこでこの記事では、VLOOKUP関数で条件に一致する複数の検索結果を表示する方法を見ていきます。
VLOOKUPで条件が複数該当(重複)すると…
I2セルに商品分類を入れると、該当する商品の色やサイズ、在庫を一覧で検索結果に表示する仕組みを作ります。
上記のように、重複する検索値(セーター)を引数とするVLOOKUPの数式「=VLOOKUP($I6,$C$3:$F$11,2,FALSE)」を適用すると、A007の商品の情報しか反映されません。
条件が複数該当しても個別の検索結果を表示する方法
例のように、重複する検索値がある場合でも、それぞれ表示されるように変更していきます。
今回は、シンプルにCOUNTIFで連番を付与する方法をご紹介します。
- 参照範囲に連番のセルを追加します。COUNTIF関数(=COUNTIF(検索範囲,検索値))を使って同名の商品分類のデータに採番します。
- サンプルでは次のCOUNTIF関数の数式を縦にコピーしています。
=COUNTIF($D$3:D3,D3)
- COUNTIFは、検索値がD3セル~最後のセルの中で、検索値がいくつあるか調べる関数です。
- B3セル「=COUNTIF($D$3:D3,D3)」は、D3セル~D3セルの範囲で、D3セル「Tシャツ」の個数を数えるので当然結果は「1」です。
- B11セル「=COUNTIF($D$3:D11,D11)」は、D3セル~D11セルの範囲で、D11セル「セーター」の個数を数えるので結果は「3」です。
- サンプルでは次のCOUNTIF関数の数式を縦にコピーしています。
- 「商品分類」と「連番」セルのデータを組み合わせて、VLOOKUPで使用するユニークな検索キー(参照範囲の1列目)を作成します。
- キーのセルには。COUNTIFの連番セルと商品分類を「&」で文字列として結合します。
=商品分類セル&連番セル
- キーのセルには。COUNTIFの連番セルと商品分類を「&」で文字列として結合します。
- 作成した列を含めた参照範囲でVLOOKUP関数を組みます。
=VLOOKUP($J$2&$I6,$A$3:$G$11,5,FALSE)
- 作成した「商品分類+連番」に一致するよう、VLOOKUPの検索値もJ2セルとI列のセル値を「&」で結合させる必要があります。
- 検索値として重複していた商品分類「セーター」の検索結果を、それぞれ取得することができました。
存在しない連番はエラーを表示しないようにIFERROR関数を用いたほうが見た目がよくなります。
以上、VLOOKUP関数で条件が複数該当(重複)時にそれぞれ抽出する方法でした。検索値を番号と結合しているのでやや強引ですが、VLOOKUPの式自体はシンプルに記述できます。
コメント