Excel で VLOOKUP を使って対応する複数の値を結合するには、どうすればよいですか?
Excel で VLOOKUP 関数を使用する際、通常は指定された検索条件に一致する最初の値のみが返されます。しかし、特定のクラスに所属するすべての学生を一覧表示したり、特定のカテゴリに関連付けられたすべての製品を取得したりするなど、あるキーに対応するすべての一致値を取得して単一のセルに結合したいケースは少なくありません。標準の VLOOKUP 関数にはこうした機能が備わっていないため、「複数の該当結果をどのようにして一つのセルにまとめて表示できるのか?」と疑問に思う方も多いでしょう。以下では、Excel のバージョンやユーザーの好みに応じて活用できる、実用的で効率的ないくつかの方法をご紹介します。

Excel で VLOOKUP を行い、対応する複数の値を結合する方法
TEXTJOIN 関数と FILTER 関数による VLOOKUP および複数の対応値の結合
Excel 365 またはExcel 2021 をご利用であれば、TEXTJOIN 関数と FILTER 関数を組み合わせることで、VLOOKUP による複数の一致値の結合を効率的に実現できます。この方法は特に動的で更新頻度の高いデータセットに最適で、ソースデータが変更されると結果が自動的に更新されます。ただし、FILTER 関数は最新の Office バージョンでのみ利用可能であるため、お使いのExcel がこの関数をサポートしていることが前提となります。
対象セルに次の数式を入力し、他の行にも適用したい場合は、その数式を下方向にドラッグしてください。これにより、すべての一致する値が抽出され、1 つのセルに結合されます。スクリーンショットをご参照ください。
=TEXTJOIN(", ", TRUE, FILTER($B$2:$B$16, $A$2:$A$16=D2, "")) 
- FILTER($B$2:$B$16, $A$2:$A$16=D2, 「」)この数式の部分では、$A$2:$A$16 内の各値をチェックし、D2 の値と一致するものがあれば、対応する$B$2:$B$16 の値が結果配列に含まれます。
- $B$2:$B$16 一致する値を取得する範囲です。
- $A$2:$A$16=D2これは値を選択するための条件です。$A$2:$A$16 の内容が D2 と一致する行のみが処理されます。
- TEXTJOIN(", ", TRUE, ...): この関数は、FILTER 関数が出力する一致値の配列を受け取り、指定された区切り文字(カンマとスペース)で1 つのテキスト文字列にスマートに結合します。同時に、空のエントリを自動的にスキップします。
- ",": カンマとスペースを区切り文字として設定します。必要に応じて、セミコロンや改行など他の記号に変更することも可能です。
- TRUE:結合時に空のセルを無視し、見やすく整った形式の出力を実現します。
特別な注意点: この方法をご利用いただくには、Excel 365 またはExcel 2021 が必要です。旧バージョン(例:Excel 2019、2016 以前)では動作しませんので、適用前に必ずお使いのExcel バージョンをご確認ください。
ヒント: 検索値(例:D2)が変更されたり、データ範囲に一致する項目が追加されたりすると、結果は追加の操作なしに自動的に更新されます。
潜在的な制限事項: 非常に大規模なデータセットでは、数式の計算に時間がかかる場合があります。また、検索範囲や結果範囲に結合セルが含まれていないかご確認ください。これらは数式エラーの原因となることがあります。
Kutools for Excel による VLOOKUP および複数の対応値の結合
組み込みの数式による方法が複雑に感じられる場合や、TEXTJOIN や FILTER といった高度な関数をサポートしていないExcel バージョンをお使いの場合は、Kutools for Excel が提供する直感的なグラフィカルなソリューションをご活用ください。Kutools の一対多検索機能を使えば、わずか数ステップで複数の一致結果を簡単に検索・結合でき、初心者から上級者まで幅広くご利用いただけます。複雑な数式やコードを記述する必要がなく、繰り返しの検索と集計が必要な大規模または可変的なデータセットの処理に特に便利です。
Kutools for Excel をインストール後、以下の手順に従って操作してください。
Kutools > スーパー LOOKUP > 一対多の検索(複数の結果を返す)をクリックして、設定ダイアログを開きます。このダイアログでは、以下の手順で検索および出力設定を素早く構成できます。
- 結合結果を表示する対象セルと、検索したい値を含むセルを選択します。
- 検索キーと結果の両方を含むテーブル範囲を指定します。
- 検索キーを含む列(キーカラム)と、結合時に取得したい値を含む列(返すカラム)を指定します。
- [OK]ボタンをクリックして設定を確定し、データを処理します。

結果: Kutools が選択した出力セルに、すべての一致する値を結合した結果を表示します。スクリーンショットをご確認ください。
この方法は、複雑な数式やコードを使わずにExcel インターフェース上で作業したい方におすすめです。また、数式エラーのリスクを低減し、繰り返し発生する検索・結合タスクの生産性を向上させます。
ユーザー定義関数による VLOOKUP および複数の対応値の結合
VBA(Visual Basic for Applications)に習熟している方、または動的配列や FILTER 関数をサポートしていない旧バージョンのExcel をご利用の方は、カスタムのユーザー定義関数(UDF)を作成することで、複数の結果を柔軟に結合できます。この方法はすべてのExcel バージョンで汎用的に利用でき、区切り文字や条件に応じて自由にカスタマイズ可能です。
1。ALT + F11キーを押して、Microsoft Visual Basic for Applicationsウィンドウを開きます。
2。挿入 > モジュールをクリックして、モジュールウィンドウに次のコードを貼り付けてください。
VBA コード:セル内で複数の一致値を VLOOKUP して結合する
Function ConcatenateMatches(LookupValue As String, LookupRange As Range, ReturnRange As Range, Optional Delimiter As String = ", ") As String
'Updateby Extendoffice
Dim Cell As Range
Dim Result As String
Result = ""
For Each Cell In LookupRange
If Cell.Value = LookupValue Then
Result = Result & Cell.Offset(0, ReturnRange.Column - LookupRange.Column).Value & Delimiter
End If
Next Cell
If Result <> "" Then
Result = Left(Result, Len(Result) - Len(Delimiter))
End If
ConcatenateMatches = Result
End Function
3。保存して閉じる VBA エディターを閉じます。ワークシートに戻り、結果を表示したい空白セルに次の数式を入力します:=ConcatenateMatches(D2, $A$2:$A$16, $B$2:$B$16)。必要に応じてフィルハンドルを下方向にドラッグして、他のセルにも数式をコピーしてください。これにより、指定した検索値に対応するすべての値が1 つのセルにカンマとスペースで区切られて結合され、表示されます。スクリーンショットをご参照ください。

- D2: データセット内で照合する検索値(LookupValue)です。
- A2:A16:検索値を探す範囲(LookupRange)です。
- B2:B16:検索値と一致した場合に結合される値が含まれる範囲(ReturnRange)です。
VBA コードによる VLOOKUP および複数の対応値の結合
繰り返しの使用が必要な場合や、ワークシートのセル内にカスタム関数を使いたくない場合は、あらかじめ作成された VBA マクロを使って結果を直接結合できます。この方法なら、すべてのユーザーが同じバージョンやアドインをインストールしていない共有環境でも問題なくご利用いただけます。
1。開発者ツール > Visual Basicをクリックして、VBA エディターを開きます。
2。挿入 > モジュールをクリックして、次のコードをモジュールに貼り付けます。
Sub VLookupAndConcatenate()
Dim ws As Worksheet
Dim dataRange As Range, lookupRange As Range, resultRange As Range
Dim dict As Object
Dim i As Long, lastRow As Long
Dim lookupValue As Variant, result As String
Dim delimiter As String
delimiter = ", "
Set dict = CreateObject("Scripting.Dictionary")
Set ws = ActiveSheet
On Error Resume Next
Set dataRange = Application.InputBox( _
Prompt:="Please select the data range (contains lookup column and result column)", _
Title:="Select Data Range", _
Type:=8)
On Error GoTo 0
If dataRange Is Nothing Then Exit Sub
On Error Resume Next
Set lookupRange = Application.InputBox( _
Prompt:="Please select the lookup range (single column)", _
Title:="Select Lookup Range", _
Type:=8)
On Error GoTo 0
If lookupRange Is Nothing Then Exit Sub
On Error Resume Next
Set resultRange = Application.InputBox( _
Prompt:="Please select the starting cell for results output", _
Title:="Select Output Location", _
Type:=8)
On Error GoTo 0
If resultRange Is Nothing Then Exit Sub
resultRange.Resize(lookupRange.Rows.Count, 1).ClearContents
For i = 1 To dataRange.Rows.Count
lookupValue = dataRange.Cells(i, 1).Value
If Not dict.Exists(lookupValue) Then
dict.Add lookupValue, dataRange.Cells(i, 2).Value
Else
dict(lookupValue) = dict(lookupValue) & delimiter & dataRange.Cells(i, 2).Value
End If
Next i
For i = 1 To lookupRange.Rows.Count
lookupValue = lookupRange.Cells(i, 1).Value
If dict.Exists(lookupValue) Then
resultRange.Cells(i, 1).Value = dict(lookupValue)
Else
resultRange.Cells(i, 1).Value = "Not Found"
End If
Next i
MsgBox "Operation completed! Processed " & lookupRange.Rows.Count & " lookup values.", vbInformation
End Sub
3。
ボタンをクリックしてマクロを実行します。入力ボックスが表示され、データ範囲、検索範囲、および結果の出力先を選択するよう促されます。選択したセルに、結合結果が即座に表示されます。
このマクロ方式は、異なる値を使って複数の結合検索を頻繁に行う場合に特に有用です。ワークシートに UDF 呼び出しを散在させる必要がなくなるためです。
必要に応じてコード内の区切り文字を簡単に調整でき、ワークフローに合わせて結果をセルやファイルに出力するようマクロを拡張することも可能です。
Excel で複数の対応する値を結合するには、さまざまな手法があり、それぞれの状況に応じて独自のメリットがあります。ダイナミック配列数式、Kutools for Excel などのアドイン、あるいは VBA を活用した方法のいずれを選んでも、グループ化されたデータをより効率的に分析・表示できるようになります。データセットの規模や複雑さに応じて、ご自身やチームにとってパフォーマンスと保守性の両面で最適な手法をぜひ検討してください。日常業務では、データの一貫性を保ち、重複した結合を避け、参照範囲を正確に設定することで、最良の結果が得られます。数式の計算でエラーが発生した場合は、指定した範囲が実際のデータと一致していること、およびお使いのExcel バージョンに応じた正しい数式入力方法を採用していることを再度ご確認ください。
さらに高度なExcel テクニックや幅広い実践的なハウツーガイドをご覧になりたい方は、当社の充実したチュートリアルライブラリをぜひご覧ください。
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得
