Excel で3 つの列に共通する値を簡単に見つける方法は?
Excel でデータを扱う際、リスト同士を比較して共通または重複する項目を特定することはよくあります。2 つの列を比較して共通値を検索するのは日常的な作業ですが、3 つの異なる列に同時に存在する値を特定しなければならないケースも少なくありません。たとえば、アンケートデータの統合、販売記録のマージ、複数のリスト間での重複エントリの分析などを行う際には、以下に示すスクリーンショットのように、3 つの列すべてに共通する項目を正確に抽出することが重要です。本記事では、この課題を解決するための実用的な手法をいくつか紹介し、数式や VBA を活用して、3 つの列に共通する値を効率的かつ確実に特定できるようにします。

配列数式で3 つの列に共通する値を検索する
3 つの列に共通する値を検索・抽出するには、すべての範囲を選択し、その中に含まれる項目を検索するように設計された配列数式を使用できます。これは、追加のExcel アドインや外部ツールに依存したくないデータセットで特に役立ちます。
最初の共通値を表示したい空白セルに、次の配列数式を入力してください。
=LOOKUP("zzz",CHOOSE({1,2},"",INDEX(A$2:A$10,MATCH(0,COUNTIF(E$1:E1,A$2:A$10)+IF(IF(COUNTIF(B$2:B$8,A$2:A$10)>0,1,0)+IF(COUNTIF(C$2:C$9,A$2:A$10)>0,1,0)=2,0,1),0)))) この配列数式の使用方法:
- 選択したセルに数式を入力した後、Shift + Ctrl + Enter(Enter キーだけではありません)を押してください。Excel はその数式を波括弧で囲み、配列数式であることを示します。
- 数式を列の下方向にドラッグし、空白セルが表示されるまで続けてください。これにより、3 つの列すべてに共通する値が一覧表示され、空白セルはそれ以上一致する値がないことを示します。

注記およびパラメーターの説明:
- 別の配列数式を使いたい場合は、以下の数式も3 つの列すべてに含まれる一意の値をすべて返します。
こちらも、数式を入力または貼り付けた後は、Shift + Ctrl + Enterを押すのをお忘れなく。=INDEX($A$2:$A$10, MATCH(0, COUNTIF($E$1:E1, $A$2:$A$10)+IF(IF(COUNTIF($B$2:$B$8, $A$2:$A$10)>0,1,0)+IF(COUNTIF($C$2:$C$9, $A$2:$A$10)>0,1,0)=2,0,1),0)) - これらの数式において:
- A2:A10、B2:B8、C2:C9は、それぞれ比較したい3 つの列に対応する範囲です。
- E1は、数式の開始位置の直上にあるセルを指します(除外ロジック用)。実際の範囲や結果を表示したい場所に合わせて、セル参照を調整してください。
- これらの方法は中規模なデータセットには最適ですが、配列数式の計算負荷が高いため、非常に大規模なデータでは処理速度が低下する可能性があります。
- 途中でソース範囲を変更しないようにご注意ください。変更すると、結果が不正確になったり、数式エラーが発生したりする恐れがあります。
- 結果に空白行が含まれる場合、すべての共通値はすでに抽出済みであり、残りのセルにはこれ以上の共通項目が存在しないことを意味します。

KUTOOLS AI でExcel の魔法を解き放ちましょう
- スマート実行:セル操作、データ分析、チャート作成をすべてシンプルなコマンドで実現します。
- カスタム数式:ワークフローの効率化に役立つ、あなただけのカスタマイズ数式を生成します。
- VBA コーディング:VBA コードを簡単に記述・実装できます。
- 数式の解釈:複雑な数式が簡単に理解できます。
- テキスト翻訳:スプレッドシート内で言語の壁を乗り越えましょう!
3 つの列すべてに含まれる値を抽出する VBA マクロ
複雑な数式を手動で入力またはコピーするのではなく、自動化された方法をご希望であれば、Excel VBA を使ってデータをループ処理し、3 つの列すべてに共通する値のみを出力できます。この方法は、非常に大規模なデータセットや動的範囲を扱う際に特に効果的です。なぜなら、VBA は繰り返しタスクやカスタム条件の処理をより効率的に実行できるからです。
1。「開発」タブの「Visual Basic」をクリックして、VBA エディターを開きます(「)開発」タブが表示されていない場合は、「ファイル > オプション > リボンのユーザー設定」から有効化できます)。
2。VBA エディターで、「挿入」>「標準モジュール」をクリックして、新しいモジュールを作成してください。その後、以下のコードをモジュールウィンドウに貼り付けてください。
Sub FindCommonValuesThreeColumns()
Dim dict1 As Object
Dim dict2 As Object
Dim dict3 As Object
Dim resultDict As Object
Dim rngA As Range
Dim rngB As Range
Dim rngC As Range
Dim cell As Range
Dim outputRow As Long
Dim key As Variant
On Error Resume Next
Set dict1 = CreateObject("Scripting.Dictionary")
Set dict2 = CreateObject("Scripting.Dictionary")
Set dict3 = CreateObject("Scripting.Dictionary")
Set resultDict = CreateObject("Scripting.Dictionary")
' Prompt the user to select the three column ranges
Set rngA = Application.InputBox("Select the first column range", "KutoolsforExcel", Selection.Address, Type:=8)
Set rngB = Application.InputBox("Select the second column range", "KutoolsforExcel", Selection.Address, Type:=8)
Set rngC = Application.InputBox("Select the third column range", "KutoolsforExcel", Selection.Address, Type:=8)
' Store all unique values from each column into corresponding dictionaries
For Each cell In rngA
If Not dict1.exists(cell.Value) And cell.Value <> "" Then
dict1.Add cell.Value, 1
End If
Next
For Each cell In rngB
If Not dict2.exists(cell.Value) And cell.Value <> "" Then
dict2.Add cell.Value, 1
End If
Next
For Each cell In rngC
If Not dict3.exists(cell.Value) And cell.Value <> "" Then
dict3.Add cell.Value, 1
End If
Next
' Check which values exist in all three dictionaries
For Each key In dict1.keys
If dict2.exists(key) And dict3.exists(key) Then
resultDict.Add key, 1
End If
Next
' Output result to next empty column on the active sheet
outputRow = 1
For Each key In resultDict.keys
Cells(outputRow, Columns.Count).End(xlToLeft).Offset(0, 1).Value = key
outputRow = outputRow + 1
Next
MsgBox "Common values extracted next to your data.", vbInformation, "KutoolsforExcel"
End Sub 3。モジュールを選択した状態で VBA ウィンドウ内で、F5を押すか、「実行(▶)」ボタンをクリックしてコードを実行します。その後、比較したい3 つの列範囲を順に選択するよう求められます。各プロンプトが表示されたら、マウスで該当のセル範囲をハイライトしてください。
4。マクロは選択範囲を処理し、3 つの列すべてに共通する値を現在のデータセットの直後の空列に、先頭行から出力します。
この方法は、大規模または動的なデータセットを扱う際に効率的で、辞書ロジックを複製するだけで4 列以上にも簡単に拡張できます。マクロを実行する前に必ずブックを保存してください。保存されていない変更は、元に戻したい場合に復元できません。
最高の 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 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得