ExcelのVLOOKUP関数で該当する複数の値を抽出する方法!

ExcelのVLOOKUP関数で該当する複数の値を抽出する方法!

Microsoft Excelで、VLOOKUP関数を使用して該当する複数の値を抽出したいと思ったことはありませんか?複数の関数を使用して抽出を行いましょう。この記事では、ExcelのVLOOKUP関数で該当する複数の値を抽出する方法をご紹介していきます。


目次[非表示]

  1. ExcelのVLOOKUP関数で該当する複数の値を抽出したい
  2. ExcelのVLOOKUP関数で該当する複数の値を抽出する方法

ExcelのVLOOKUP関数で該当する複数の値を抽出したい

Microsoft Excelで、ExcelのVLOOKUP関数で該当する複数の値を抽出したいと思ったことはありませんか?VLOOKUP関数では検索値の1番目のみしか取得できませんが、他の関数を用いて複数の該当値を取得することができるようになります。この記事では、ExcelのVLOOKUP関数で該当する複数の値を抽出する方法をご紹介していきます。

ExcelのVLOOKUP関数で該当する複数の値を抽出する方法

結果出力表を作成
それでは、ExcelのVLOOKUP関数で該当する複数の値を抽出する方法を説明していきます。今回は画像のデータを用います。このデータの「都道府県」から、条件が「滋賀県」に該当するデータの「名前」を抽出して出力を行っていきます。画像のように結果出力表を作成したら、E2セルに「滋賀県」と入力してからG2セルに「=VLOOKUP(E2,A2:B11,2,FALSE)」と入力しましょう。
検索結果が表示された
これで、滋賀県が入力されているセルに該当する1番目の検索結果が表示されました。
2番目の検索結果を表示させる
続いて、2番目の検索結果を表示させてみましょう。G3セルを選択して「=VLOOKUP(E2,INDIRECT("A"&MATCH($E$2,A$1:A$11,0)+1 &":B11"),2,FALSE)」と入力します。MATCH関数を使用して、検索値に該当している検索位置を返しています。そしてINDIRECT関数を併用して検索範囲をVLOOKUP関数へと繋いでいます。
検索結果が表示された
これで、2番目の検索結果を表示させることができました。
「検索位置」と「セル番」の作業列を作成
3番目移行の検索結果を表示させるためにMATCH関数を繰り返して使うのは非効率的なので、VLOOKUP関数の出力結果を表示させる「検索位置」と検索値があるセルの番号を出力する値を入力する「セル番」の作業列を作成します。
1番目の位置番号を出力
H2セルに「=MATCH($E$2,A$1:A$11,0)」と入力して、1番目の位置番号を出力します。
セル番
位置番号「3」が出力されました。この「3」は、1行目から3番目を意味しています。続いてI2セルに「-H2」と入力します。
検索位置の番号がセル番に割り当てられた
これで検索位置の番号を、セル番に割り当てます。
2番目の検索位置を入力
次はH3セルに「=MATCH($E$2,INDIRECT("A"& I2+1 &":A11"),0)」と入力します。これにより、MATCH関数の検索開始位置を1番目のセル番号+1番目から開始して2つ目を探すという形になります。
2番目のセル番セルに入力
これで検索位置が出力されるので、I3セルに「=SUM(H$2:H3)」と入力して2番目の値が存在している行番号を算出しています。
フィルハンドルを下方向にドラッグ
あとは、H3セルとI3セルを範囲選択した状態で右下に表示されるフィルハンドルを下方向にドラッグして伸ばしましょう。数式をコピーして、残りのセルに適用させます。
数式が残りのセルにも適用された
数式が残りのセルにも適用されました。
G4セルを選択して、「=VLOOKUP(E$2,INDIRECT("A" & I4 &":B11"),2,FALSE)」と入力します。これで3番目に滋賀県が該当するデータを出力することができます。
フィルハンドルをドラッグ
結果が出力されたら、セルの右下のフィルハンドルをドラッグして下方向へ伸ばして残りのセルにも数式を適用しましょう。
該当するデータをすべて抽出することができた
これで、「滋賀県」が該当するデータをすべて抽出することができました。このようにして、ExcelのVLOOKUP関数で該当する複数の値を抽出することができますよ。

VBAを使用してVLOOKUP関数で該当する複数の値を抽出する

「ファイル」タブをクリック

VBAを使用して、上記の操作を簡単に行う方法もありますよ。VBAを使用するには「開発」タブを有効にしましょう。Excelを起動して、ウィンドウ左上の「ファイル」タブをクリックしましょう。

「オプション」をクリック

ホーム画面が表示されるので、左側メニュー最下部にある「オプション」をクリックしましょう。

「リボンのユーザー設定」→「開発」のチェックボックスを有効にして「OK」をクリック

「Excelのオプション」ウィンドウが表示されます。左側メニューの「リボンのユーザー設定」をクリックして「リボンをカスタマイズします。」の「リボンのユーザー設定」の一覧から、「開発」のチェックボックスをクリックして有効にしてから「OK」をクリックしましょう。これで、開発タブが有効になります。

「Visual Basic」をクリック

Excelに戻ったら「開発」タブをクリックしてリボンメニューを開き、「コード」項目の「Visual Basic」をクリックしましょう。

「VBAProject」を右クリック→「挿入」→「標準モジュール」をクリック
「Microsoft Visual Basic for Applications」ウィンドウが開くので、「VBAProject」を右クリックしてメニューの「挿入」→「標準モジュール」をクリックしましょう。あとは下記のVBAを挿入して「実行」をクリックすれば処理が行われますよ。
Sub 複数の検索結果を出力する()

    Dim strTemp As Variant
    Dim i As Integer
    Dim k As Integer
    
    '出力開始行数指定
    k = 2
    
    '検索値を取得します。
    strSerchKey = Range("E2").Value
    
    
    '出力セルの値のみをクリアします。
    'https://extan.jp/?p=3525#%E3%82%BB%E3%83%AB%E3%81%AE%E5%80%A4%E3%81%AE%E3%81%BF%E3%82%92%E3%82%AF%E3%83%AA%E3%82%A2%E3%81%99%E3%82%8B
    Range("F2:G7").ClearContents
    
    '処理対象のセルをレンジ指定します。
    strTemp = Range("A2:B13")
    
    '配列に格納された値すべてを対象に処理します。
    For i = LBound(strTemp, 1) To UBound(strTemp, 1)
        If strTemp(i, 1) = strSerchKey Then
            Cells(k, 7) = strTemp(i, 2)
            Cells(k, 6) = k - 1 & "番目"
            k = k + 1
        End If
    Next

End Sub

関連記事