ExcelでVLOOKUPしてすべてのマッチを返す(7つの方法)

  • これを共有
Hugh West

応募方法はいくつかあります。 ブイルック この記事では、Microsoft Excelの縦型ルックアップを使用して、複数のマッチングに基づくデータを返す方法について説明します。 ブイルック を、適切な図版を使用して、利用可能なすべてのデータを抽出します。

練習用ワークブックをダウンロードする

この記事の作成に使用したExcelワークブックをダウンロードすることができます。

VLOOKUPとReturn All Matches.xlsx

ExcelでVLOOKUPし、すべてのマッチを返す7つの方法

があります。 ブイルック 関数は、表の左端の列から値を探し、指定した列から同じ行の値を返します。 しかし、この関数は、1つの列から複数のマッチに基づくデータを抽出することができません。 そこで、列から値を検索して見つかったすべてのマッチを返すために、いくつかの他の関数や数式を挿入する必要があります。

1.VLOOKUPと列の複数マッチを返す

次の図では、複数の従業員の名前と部署をランダムに含むテーブルがあります。 製造部門で働いている従業員の名前を1つの列に表示したいと仮定しています。

もし、あなたが Excel 365 ユーザーであれば フィルター 関数は、ここですぐに戻り値を見つけることができます。 この関数で フィルター 関数では、出力に必要な数式 セルC16 になります。

=FILTER(C5:C13,C15=B5:B13)

を押した後 入力 から、社員の名前が表示されます。 製造 部門を縦に並べています。

を使用している場合、または 旧バージョン の場合は、以下の結合式を使用する必要があります。

=index($c$5:$c$13, small(if(($c$15=$b$5:$b$13), match(row($b$5:$b$13), row($b$5:$b$13)), "")),rows($a$1:a1)))

を押した後 入力 を選択すると、出力に従業員のファーストネームが表示されます。 セルC16 .

を使用することにより フィルハンドル から セルC16 を下向きにすると、指定した部署の従業員の残りの名前を一度に取得できます。

🔎 このフォーミュラはどのように機能するのですか?

  • row($b$5:$b$13)。 があります。 関数は、定義されたセル参照の行番号を抽出し、以下の配列を返す。

{5;6;7;8;9;10;11;12;13}

  • match(row($b$5:$b$13), row($b$5:$b$13)): MATCH の配列が返されます。

{1;2;3;4;5;6;7;8;9}

  • if(($c$15=$b$5:$b$13), match(row($b$5:$b$13), row($b$5:$b$13)), ""): の協力で イフ 関数では、この部分は指定された条件を満たす行のインデックス番号を返します。 つまり、この部分は、配列を返します。

{"";2;"";4;"";"";"";"";9}

  • があります。 SMALL は、前のステップで見つけた最初の小さな数字を取り出し、この数字を2番目の引数に代入します。 (行番号) INDEX 関数を使用します。
  • 最後に INDEX 関数は、指定された行番号に基づいた従業員の名前を表示します。
  • があります。 関数で定義されます。 k番目 の番号が表示されます。 SMALL 機能を使っている間 フィルハンドル で残りのセルを埋めるには、この数式を使います。 k番目 の番号の後に、データを抽出するための SMALL 関数を使用します。

続きを読む INDEX MATCHとVLOOKUP関数の比較 (9例)

2.ExcelでVLOOKUPと行のすべてのマッチを返す

従業員の名前を水平に表示させたい場合は フィルター という関数があります。 トランスポーズ 機能です。 トランスポーズ 関数は、セルの垂直範囲を水平範囲に、またはその逆に変換します。 そして、この結合式を使用するには、あなたが Excel 365 のユーザーです。

そこで、出力に必要な式 セルC16 になります。

=transpose(filter(c5:c13,c15=b5:b13))

を押してください。 入力 と入力すると、Manufacture部門の従業員の名前が横並びで表示されます。

または、出力に以下の数式を挿入します。 セルC16 Excel 365のユーザーでない場合。

=index($c$5:$c$13, small(if($c$15=$b$5:$b$13, row($b$5:$b$13)-min(row($b$5:$b$13))+1, "")), columns($a$1:a1))

プレス 入力 と入力すると、指定した部署の従業員のファーストネームが表示されます。

では、使用する フィルハンドル をドラッグして セルC16 を見つけるまで、右方向に進みます。 #エヌエム というエラーが表示されます。 製造 部門を横並びにした。

ここに挿入された数式は、抽出したデータを縦に表示する必要がある記事の前の例で使用した最初の長い数式とほぼ同じです。 唯一大きな違いは、抽出されたデータを縦に表示するために コロンブス のシーケンス番号を指定するために、ここで SMALL セルを水平方向に自動充填している間、数式は、そのシーケンス番号に従って SMALL 関数を使ってデータを抽出します。

続きを読む Excel VLOOKUPで複数の値を縦に返す

3.条件に応じて複数の値を返すVLOOKUP

テーブルの真ん中にカラムを追加しました。 このカラムには、プロジェクトIDが保存され、そのIDに対応する従業員が、テーブルの真ん中に存在します。 D列 そこで、今度は2種類の条件を入力し、一致したものからデータを抽出することにします。

例えば、現在働いている従業員の名前を知りたい。 売上高 のプロジェクトIDを持つ部署があります。 DMR 103 .

出力に必要な数式 セルC17 になります。

=ferror(index($d$5:$d$13, small(if(1=((--($c$15=$b$5:$b$13)) * (--($c$16=$c$5:$c$13)), row($d$5:$d$13)-4,""), row()-16)),""))

プレス 入力 をクリックすると、指定した条件下で従業員のファーストネームを見つけることができます。

を記入します。 セルC17 を使えば、与えられた条件で名前の残りを表示することができます。

🚩 このフォーミュラのいくつかの重要な特徴。

  • この式も、先ほどの方法とよく似ている。
  • この式では イフエラー 関数は、エラーが見つかった場合にカスタマイズされた出力を表示するために使用されています。
  • があります。 イフ この式の関数は、2つの異なる基準を組み合わせ、二重単項の助けを借りて、ブーリアン値 (真偽) ようになる 1 または 0 この関数は,与えられた条件にマッチした行のインデックス番号を返します.
  • 行($d$5:$d$13)-4: 本編では、数 '4' は、Employee ヘッダの行番号です。
  • ROW()-16です。 そして、その数値は '16' この部分で使用されているのは、最初の出力セルの前の行番号である。

続きを読む ExcelでVLOOKUPを複数条件で使用する(6つの方法+代替案)

4.VLOOKUPとオートフィルタで全一致を引き出す

を使用することにより オートフィルター 今回は製造部門の従業員の名前を取り出すので、次のような手順で行います。

📌 ステップ1.

➤ データテーブル全体を選択し、マウスを右クリックします。

➤ 選択してください。 '選択したセルの値でフィルタリング' オプションを指定します。 フィルター のオプションがあります。

を起動したところですね。 フィルター ボタンを使ってヘッダを作成します。

📌 ステップ2.

をクリックします ➤。 フィルター ボタンをクリックします。 部署名 ヘッダを表示します。

➤ マークを付けてください。 製造 オプションのみです。

➤ プレス よっしゃー で終了です。

下のスクリーンショットのように、結果とフィルタリングされたデータが表示されます。

続きを読む VLOOKUPでExcelの複数マッチングを行う

類似の読み物

  • エクセルでダブルVLOOKUPを適用する方法(4つの簡単な方法)
  • VLOOKUPが動作しない(8つの理由と解決策)。
  • 複数のシートでExcelのSUMIF & VLOOKUPを結合する方法
  • Excelで複数の列を返すVLOOKUP(4例)
  • エクセルで複数の条件を指定してVLOOKUPする方法(2つの方法)

5.VLOOKUPでExcelの高度なフィルタを使ってすべてのマッチを抽出する

を使用することもできます。 アドバンストフィルター ここで、Excelのスプレッドシートから基準の範囲を選択し、基準を定義する必要があります。 次の図では、このようになります。 B15:B16 は基準範囲である。

📌 ステップ1.

➤ データテーブル全体を選択する。

➤下記。 データ リボンをクリックします。 アドバンスト コマンドを実行します。 ソートとフィルター をドロップダウンしてください。

というダイアログボックスが表示されます。 アドバンストフィルター が開きます。

📌 ステップ2.

➤ データテーブル全体を選択して リスト範囲 の入力が必要です。

➤ 選択する B15:B16 の入力に対して 基準範囲 .

➤ プレス よっしゃー .

の従業員の名前でフィルタリングされた結果が表示されます。 製造 部のみです。

続きを読む エクセルで複数条件のVLOOKUP(6例)

6.VLOOKUPで表形式にして全値を返す

では、もう一つの簡単な方法として、データテーブルを書式付きテーブルに変換してフィルタリングする方法を紹介します。

📌 ステップ1.

➤ 最初に主データテーブルを選択する。

➤ From. 表形式にする の下にあるドロップダウン ホーム タブで、お好きなテーブルを選んでください。

最初のステップの後、データテーブルは次のスクリーンショットに示すように、フィルタリングされたヘッダーを持つようになります。

📌 ステップ2.

➤ 選択してください。 製造 のフィルターボタンをクリックした後 部署名 ヘッダを表示します。

➤ プレス よっしゃー で終了です。

以下の画面は、指定された選択項目に基づいた出力を表示しています。

続きを読む VBA VLOOKUPを使用してExcelで別のワークシートの値を検索する

7.エクセルですべてのマッチングを1つのセルに引き出すVLOOKUP

があります。 テキストジョイン は,文字列のリストや範囲を区切り記号で連結する関数です. テキストジョイン イフ 関数を併用することで、ある値を調べ、すべてのマッチングに基づくデータを1つのセルに抽出することができます。

出力に必要な数式 セルC16 になります。

=textjoin(", ",true,if($b$5:$b$13=$c$15,$c$5:$c$13,"))。

を押した後 入力 から、社員名が表示されます。 製造 部門をカンマで区切って1つのセルに入れる。

この式では イフ 関数は,マッチした名前の配列と,マッチしなかったセルに対するブーリアン値 'FALSE'を返す。 テキストジョイン 関数は,見つかったすべての名前を指定されたデリミターで結合する。

続きを読む VLOOKUP Excelの1つのセルから部分的なテキストを取得する

結びの言葉

以上、ご紹介した方法が、必要なときにExcelのスプレッドシートで適用できるようになることを願っています。 ご質問やご意見がありましたら、コメント欄でお知らせください。 また、本サイトのExcel関数に関連する他の記事もご覧ください。

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。