目次
エクセルの機能の中で、最も素晴らしく、広く使われているのが VLOOKUP機能 これまで、この関数を使ってセル範囲から1つだけ一致する値を取り出す方法を学びました。 一意な識別子に対して、一致するすべての値を取り出す必要があるシナリオは頻繁に発生します。 この記事では、セル範囲から複数の一致する値を取り出す方法として VLOOKUP機能 をExcelで表示します。
練習用ワークブックをダウンロードする
以下のExcelワークブックをダウンロードしていただくと、より理解が深まり、ご自身で練習することができます。
複数一致でVlookupを実行する.xlsxExcelで複数一致のVlookupをするための2つのステップ
ここで、私たちは マーチン書房のブックレコード このデータセットには ブックタイプ , 書籍名 そして 著者名 欄外に一部書籍 B , C そして D に対応する。
今日の目的は、各タイプの本の一致をすべて引き出すことです。 VLOOKUP機能 2つのステップで実行するので、1つずつ探っていきましょう。
ここでは Microsoft Excel 365 のバージョンと同じですが、お客様のご都合に合わせてご利用ください。
📌 ステップ01:各検索値に対して一意な名前を作成する
- 一番最初に新しい列を挿入し、見出しを次のようにします。 ヘルパーコラム ルックアップ列の左側 ブックタイプ を入力し、この数式をセルに入力します。 B5 .
=C5&COUNTIF(C5:$C$25,C5)
フォーミュラ・ブレークダウン - countif(c5:$c$25,c5) は、範囲内のセルの総数を返します。 C5:C25 ( ブックタイプ ) の値を含むセル C5 ( 小説 ) をご覧ください。 COUNTIF機能 をご覧ください。
- 簡単に言うと、小説が何冊あるかということです。 それは 7 .
- C5&COUNTIF(C5:$C$25,C5)です。 の値を連結する。 C5 ( 小説 )を使っています。
- というわけで返ってきます。 ノベルセブン .
をドラッグすると フィルハンドル ツールを使用します。 C5 のように1つずつ増加します。 C5 , C6 , C7 処か C25 は一定である。 したがって、各 ブックタイプ の場合、それ以前のものは除外され、新しい名前が生成されます。
例えば、小説の場合。 小説1 まで ノベルセブン が生成され、同様に 詩歌 などのブックタイプがあります。
- 次に、 を押します。 エンタメ .
- その後、カーソルをセルの右下隅に持っていき B5 で、プラスに見えるでしょう (+) のサインです。 フィルハンドル ツールを使用します。
- ここで、ダブルクリックします。
この数式を残りのセルにコピーします。 すべてのルックアップ値には、次のような一意の名前が付けられています。 小説1 , Novel2.., ポエム1 , ポエム2... など。
ステップ02:VLOOKUP関数を使用する
- まず、新しいカラムを作成し カラムヘッダー をルックアップ値として使用します。
- 次に、セルに次の数式を挿入します。 G5 この列の最初のセルである。
=VLOOKUP(G$4&ROW($A$1:INDIRECT("A"&COUNTIF($C$5:$C$25,G$4))),$B$5:$E$25,3,FALSE)
フォーミュラ・ブレークダウン - countif($c$5:$c$25,g$4) は、範囲内の何番目のセルかを示す。 C5:C25 ( ブックタイプ には、セル G4 ( 小説 ).
- 簡単に言うと、全部でいくつの小説があるかということです。 それは 7 .
範囲の絶対セル参照を使用しました。 C5:C25 ( C$5:$C$25 ) は、数式をどのセルにコピーしても変更されないようにしたいからです。
- INDIRECT("A"&COUNTIF($C$5:$C$25,G$4))。 になる INDIRECT("A"&7)です。 を取得し、セル参照を返す。 A7 .参照 INDIRECT機能 をご覧ください。
- ROW($A$1:INDIRECT("A"&COUNTIF($C$5:$C$25,G$4))) になりました。 ROW(A1:A7) .参照 ROW機能 をご覧ください。
- から配列を返します。 1 まで 7 のように {1, 2, 3, 4, 5, 6, 7} .
を使用しました。 $A$1 というのは、数式を他のセルにコピーしても変更されないようにしたいからです。
- G$4&ROW($A$1:INDIRECT("A"&COUNTIF($C$5:$C$25,G$4)))の場合 の値を連結するようになりました。 G4 ( 小説 によって返される配列と比較します。 ROW機能 を実行し、別の配列を返します。
- というわけで返ってきます。 {Novel1、Novel2、...、Novel7}。 .
- VLOOKUP(G$4&ROW($A$1:INDIRECT("A" &COUNTIF($C$5:$C$25,G$4))),$B$5:$E$25,3,FALSE)を実行する。 になる VLOOKUP({Novel1, Novel2, ..., Novel7},$B$5:$E$25,3,FALSE) .
配列の各値を検索します。 {Novel1、Novel2、...Novel7}。 ルックアップカラムの B .
そして、それに対応する小説の名前を 3位 の列があります。 col_index_num でございます 3 こうして、すべての小説のリストを得ることができます。
- いつものように エンタメ キーになります。
注 配列式なので、忘れずに Ctrl + Shift + Enter Excel 365でない場合 .
そして、もう一つのために 書籍の種類 ,
- 最初は、2人の名前を並べて、次のように挿入します。 カラムヘッダー をドラッグして フィルハンドル .
続きを読む ExcelでINDIRECT VLOOKUPを使用する。
類似の読み物
- VLOOKUPが動作しない(8つの理由と解決策)。
- ExcelのLOOKUPとVLOOKUP:3つの例付き
- VLOOKUPでマッチがあるのになぜN/Aを返すのか?
- ExcelでVLOOKUPを複数条件で使用する(6つの方法+代替案)
- Excel VLOOKUPで列の最後の値を検索する(代替案あり)
Excelで複数一致のVlookupを行う別の方法
この方法は危険だと思われる方、ご安心ください。 もっと多くの選択肢があります。
1.FILTER機能を使う
これが最もシンプルな方法ですが、ここでは、単に FILTER機能 以下の簡単なステップを踏んでください。
📌 ステップス
- まず、書き出す。 ブックタイプ として カラムヘッダー を入力し、次の数式をセル F5 .
=filter($c$5:$c$25,$b$5:$b$25=f$4)です。
フォーミュラ・ブレークダウン これです。
- C$5:$C$25 ( 書籍名 )は ルックアップ_アレイ 本の名前を探しているんだ。
- B$5:$B$25 ( ブックタイプ )は matching_array 本の種類を合わせたいので、それに合わせて使ってください。
- F4 ( 小説 )は matching_value 小説に合わせたいので、それに合わせて使ってください。
- 次に、 を押します。 エンタメ .
さて、もしあなたが 書籍名 よりによって 書籍の種類 ,
- として、その名前を挿入します。 カラムヘッダー を横に並べて、ドラッグします。 フィルハンドル ツールを使用します。
2.INDEX関数、SMALL関数、ROWS関数の組み合わせの適用(旧バージョンのExcelと互換性があります。)
があります。 FILTER機能 のみで利用可能です。 オフィス365 そこで、古いバージョンのExcelをお使いの方もご安心ください。 シンプルで簡単なので、ぜひ参考にしてください。
📌 ステップス
- 主に、挿入します。 ブックタイプ として カラムヘッダー 細胞内 F4 を入力し、この数式をセルに入力します。 F5 .
=ferror(index($c$5:$c$25,(small(if($b$5:$b$25=f4,row(b5:b25)-rows(b1:b4),""),(row(b5:b25)-rows(b1:b4))),"")).
フォーミュラ・ブレークダウン - ROW(B5:B25) の配列を返します。 {5, 6, 7, ..., 25} ... そして 行数(B1:B4) 収益 4 ... だから 行(b5:b25)-行(b1:b4) の配列を返します。 {1, 2, 3, ..., 21} .参照 列 と 列 関数を参照してください。
- if($b$5:$b$25=f4,行(b5:b25)-行(b1:b4),"") は,配列から対応する数値を返します。 {1, 2, 3, ..., 21} セル内の値 F4 ( 小説 ) の範囲内の任意のセルの値と一致する。 B5:B25 ( ブックタイプ を参照)、それ以外の場合は空白のセルを返します。 IF機能 をご覧ください。
- small(if($b$5:$b$25=f4,行(b5:b25)-行(b1:b4),""),(行(b5:b25)-行(b1:b4))) になる small({1, ..., 3, ..., 6, ..., 20, ...},{1, 2, 3, 4, ..., 21}) というように、まず数字を返し、次に #NUM! をご覧ください。 SMALL機能 をご覧ください。
- index($c$5:$c$25,(small(if($b$5:$b$25=f4,row(b5:b25)-rows(b1:b4),"")),(row(b5:b25)-rows(b1:b4)))) になる index($c$5:$c$25,{1,3,6,11,...,#num!}) を返し、対応する 書籍名 (小説名)と #NUM! をご覧ください。 INDEX機能 をご覧ください。
- 最後に、数式を IFERROR関数 をクリックして、エラーを空白のセルに変えてください。
- その後 エンタメ .
- ここで、必要であれば、もう一方の 書籍の種類 かわりに カラムヘッダー をドラッグして フィルハンドル .他の書籍の種類を取得することができます。
3.複数一致のVlookupで、結果を一列に並べて返す
これまでのメソッドでは、縦列で結果を取得しました。 しかし、横列で値を取得したい場合は、どうすればよいのでしょうか。 ここでは、縦列で取得するための 著者名 異名同訓 書籍の種類 を連続で表示させることができます。 以下の手順に従ってください。
📌 ステップス
- 最初は、セルに移動 G5 を書き、下の式を書いてください。
=ferror(index($d$5:$d$19,small(if($f5=$b$5:$b$19,row($d$5:$d$19)-4,""),column()-6)),"")
この式は、前の式と似ているので、この式の理解に問題がある場合は 前説 .
- をタップしてください。 エンタメ キーになります。
しかし、このデータセットには、他にも小説を持っている作家がいる。 では、どうやって入手できるのだろうか?
をドラッグするだけです。 フィルハンドル セルまで K5 を手に入れるために、他の 著者紹介 の 小説 さらに フィルハンドル ツールからセルへ K7 の名前を取得します。 著者紹介 を、本の種類によって使い分けています。 分かりやすくするために、下の画像をご覧ください。
複数の条件で多数のマッチをVlookupする方法
これまでの例では、本の種類を指定してタイトルを取得するなど、単一の条件に対して値を求めました。 ここでは、複数の条件を意味します。 小説 の チャールズ・ディケンズ では、実際に使ってみましょう。
📌 ステップス
- まず第一に、セルを選択します。 H5 を入力し、以下の数式を貼り付けます。
=ferror(index($c$5:$c$25,small(if(1=((--($f$5=$b$5:$b$25))*(--($g$5=$d$5:$d$25))),row($c$5:$c$25)-4,""),row()-4),"")).
- 次に、 を押します。 エンタメ .
Vlookupして1つのセルに複数のマッチを返す方法
これまでのアプローチでは、別々のセルに値を取得しましたが、今回は1つのセルに結果を取得する方法を紹介します。 では、早速、始めましょう。
📌 ステップス
- 主に、セルへ G5 と入力し、以下の計算式を入力してください。
=textjoin(", ",true,if($f$5=$b$5:$b$25,c5:c25,""))です。
ここでは IF機能 の範囲から値を取得します。 C5:C25 ここで,範囲内の対応する値は B5:B25 セル内の値と一致する F5 .次に、その TEXTJOIN機能 は,カンマを区切り文字として配列の値を結合する。
- を押してください。 エンタメ .
続きを読む INDEX MATCHとVLOOKUP関数の比較 (9例)
結論
この記事では、Excelで複数一致でvlookupする方法を簡単かつ簡潔に説明します。 練習用ファイルのダウンロードもお忘れなく。 この記事をお読みいただきありがとうございました。お役に立てたでしょうか。 ご質問やご意見がありましたら、コメント欄でお知らせください。 当社のウェブサイトをご覧ください。 エクセルウィキ Excelのワンストップ・ソリューション・プロバイダーである日本エクセル協会にお問い合わせください。