VLOOKUPで複数該当した際にすべてを表示する方法

VLOOKUP複数該当すべて表示

こんにちは!さて今回はVLOOKUPで該当するデータが複数行あった場合に、そのすべてを抽出し表示します!
VLOOKUPって結果一つしか表示できないじゃん!って思うかもしれませんが、そこは工夫してやってみたいと思います。

まずはこんなフォーマットを用意しました。

年齢層を選択したら、下の表にはデータリストで該当の年齢層データをすべて表示するようにしたいと思います。
普通にVLOOKUPを行ったら該当した一番上のデータしか表示できないですが、ここから工夫していきます。

検索条件に合致したデータに連番をふっていきます

データリストの横の列に「検索条件に合致するデータの場合、連番をふる」といった条件で関数を組んでいきます。
下記図のようになります。

試しに50代を検索したところ、データリストの50代が上から1,2,3と連番がふられているのが確認できます。
関数を見ていきましょう。

=IF($F$3=K4,COUNTIF($K$3:K4,K4),0)

まずはIF文ですが
$F$3(検索値)がK4(このデータ行の年代)と一致していたら、COUNTIFを行い、不一致だったら0
という流れになっています。

問題の連番を行っているCOUNTIFを見てみます。
$K$3:K4の範囲の中に、K4(50代)がいくつあるかカウントしています。

1行目に関してはIF文の時点で不一致でしたので0が入ります。

データリストの1行目に入力したこの関数を、データリストの下の行までコピペしました。
IF文では一致する3行目を見てみましょう。

3行目はIF文が$F$3=K6で一致してますので、COUNTIFを行います。
$K$3:K6の範囲の中でK6(50代)がいくつあるかカウント
ここで、K6には50代がありましたので「1」になります!

次にとばして10行目と18行目ですが

10行目:IF文は一致し、$K$3:K13の範囲には2つあるので「2」
18行目:IF文は一致し、$K$3:K21の範囲には2つあるので「3」

という風に、検索に該当した行から順に連番がふられるようになっています。

次に、データを表示する表にも連番を用意します。

こちらはシンプルに上から1,2,3~と連番をふります。

いよいよVLOOKUPを使っていきます

関数を見ていきましょう。

=IFERROR(VLOOKUP($D11,$I$4:$L$27,2,0),””)

IFERRORはVLOOKUPがエラーだった際に空白を表示するためです。

ではVLOOKUPを見ていきましょう。
検索条件は$D11(1)を使い
先ほど作成したデータリストの連番を検索範囲($I$4:$L$27)に指定することで条件に合致した1つ目のデータを取得出来ます!

あとはこの関数をコピペすれば完成ですね。(VLOOKUP3つ目の引数は列指定なので、コピペで列をずらす際に3,4と変える必要があります)

これで完成となります!作業工程は下記動画でも確認できます。
※ちなみにすべてキーボードのみの脱マウス操作です。

VLOOKUPで複数該当した際にすべてを表示する方法の紹介でした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA