Excel で一意の値を連結するには?
スプレッドシート作業では、列から一意の値だけを結合(連結)したり、ユニークなエントリとその関連レコードをまとめたリストを作成したりする必要が頻繁にあります。重複を適切に処理し、要約情報を提示することで、データが整理され、より明確で有益なレポートが実現します。Excel にはこうしたニーズを満たすための実用的な方法がさまざま用意されており、組み込み関数の活用から高度なアドインやカスタムコードの使用まで、幅広い選択肢があります。本チュートリアルでは、一意の値を連結する方法や、ユニークなエントリとその関連データを並べて表示する方法を詳しく解説します。ご紹介するソリューションは、さまざまなExcel バージョンやユーザーの好みに対応しており、ご自身のシナリオに最適なアプローチを柔軟に選べるよう設計されています。
- TEXTJOIN 関数と UNIQUE 関数を使用する方法
- Kutools for Excel を使用する方法
- VBA コードを使用する方法
- Excel のピボットテーブルと数式を使用する方法(代替ソリューション)
列から一意の値のみを連結する
Excel でデータ分析を行う際、列内の重複を除いた一意のエントリのみを1 つのセルに結合する必要がよく生じます。この操作は、要約レポートの作成やリスト内での重複値の排除、さらなる処理に向けたデータ準備において特に効果的です。最適な方法は、お使いのExcel のバージョンやデータセットの規模、数式やコードへの習熟度によって異なります。以下に紹介する各手法は、さまざまなニーズに対応しており、それぞれのポイントを明確に示すとともに、正確に実行するための実践的なヒントを提供します。
方法 1:TEXTJOIN 関数と UNIQUE 関数を使用
Excel 365 およびExcel 2021 をご利用の方は、TEXTJOIN 関数と UNIQUE 関数を組み合わせることで、列から一意の値を非常に簡単かつ柔軟に結合できます。
このソリューションは、連続したデータ列から選択した区切り文字を使って一意の項目を素早く1 つのセルに統合したい場合に最適です。重複は自動で除外され、監査も簡単。さらに、対象範囲や区切り文字を必要に応じて柔軟に変更できます。ただし、このアプローチは最新版のExcel でのみご利用いただけますのでご注意ください。古いバージョンでは UNIQUE 関数がサポートされていません。
結果を表示したいセルに、次の数式を入力します(データがセル A2:A18 にあると仮定):
=TEXTJOIN(", ", TRUE, UNIQUE(A2:A18)) 
- UNIQUE(A2:A18) 重複エントリを除外し、範囲 A2:A18 から一意の値のみを返します。
- TEXTJOIN(", ", TRUE, ...)は、これらのユニークな値を1 つのセルに結合(連結)し、コンマとスペースで区切ります。TRUE 引数により、連結時に空のセルが無視されます。
便利なヒントとトラブルシューティング:
- Excel のバージョンがUNIQUE 関数およびTEXTJOIN 関数サポートしていることをご確認ください。#NAME?エラーが表示される場合は、お使いのバージョンが古い可能性があります。
- TEXTJOIN で使用する区切り文字は、セミコロンとスペース("; ")やパイプ(「|」)など、お好みのものに変更できます。
- 元の範囲にデータを追加または削除した場合、数式は自動的に更新されます。
- 意図しない余分なスペースや区切り文字を避けるため、数式内の区切り文字引数を再度確認してください。
方法 2:KUTOOLS AI Aide を使用
数式を記述せずに一意の値を連結するより迅速で完全自動化された方法が必要な場合、Kutools for Excel の「AI アシスタント」ツールが、スキルレベルを問わずすべてのユーザーにとって実用的なソリューションを提供し、時間を大幅に節約します。この方法は、Excel の高度な数式に不慣れな方や、データが頻繁に変更され繰り返しタスクが必要な場面で特に役立ちます。
Kutools for Excel をインストール後、「Kutools」>「AI アシスタント」をクリックして、「KUTOOLS AI Aide」ペインを開きます。
- 1 つのセルに結合したい値を含むセルを選択し、選択範囲が目的のデータと一致することを確認します。
- チャットボックスに要件を記述してください。たとえば、次のように入力できます:
「範囲を選択し、一意の値をカンマで連結して、結果をセル C2 に配置」 - Enterキーを押すか、「送信」ボタンをクリックしてください。AI がリクエストを分析し、処理後に「実行」を押すと、Kutools が操作を実行して、説明どおりの結果が返されます。
注意点とヒント:
- 最新バージョンのKutools をご利用いただき、すべての AI 機能にアクセスできるようにしてください。
- 最良の結果を得るには、テキストコマンドで区切り文字と対象セルを明確に指定してください。
- KUTOOLS AI は大規模な範囲やさまざまなデータセットで繰り返し実行する必要があるワークフローに特に効率的です。
方法 3:ユーザー定義関数を使用
高度な柔軟性が必要な場合、カスタム区切り文字を使用したい場合、または複数のワークブックで再利用可能なツールを求める場合は、VBA でユーザー定義関数(UDF)をコーディングするのが、一意の値を自動的に連結するための効果的な方法です。この VBA ソリューションはすべてのExcel バージョンと互換性があり、新機能の有無に制限されません。
- ワークブック内のマクロを有効化する必要があります。
- 今後もこの VBA コードを使い続けるには、ファイルを「マクロ有効」形式().xlsm)で保存してください。
- 新しいコードを実行する前にワークブックを定期的にバックアップすることを推奨します。
1。ALT + F11を押して、Microsoft Visual Basic for Applicationsウィンドウを開きます。
2。VBA ウィンドウで、「挿入」>「標準モジュール」をクリックして、次のコードをコピー&ペーストしてください:
VBA コード:一意の値を1 つのセルに連結する:
Function ConcatUniq(xRg As Range, xChar As String) As String
'updateby Extendoffice
Dim xCell As Range
Dim xDic As Object
Set xDic = CreateObject("Scripting.Dictionary")
For Each xCell In xRg
xDic(xCell.Value) = Empty
Next
ConcatUniq = Join$(xDic.Keys, xChar)
Set xDic = Nothing
End Function
3。ワークシートに戻って、空白セル(例:C2)に次の数式を入力してください。
=ConcatUniq(A2:A18,",")次に、Enterキーを押して確定すると、セルには制限された範囲内の重複しないすべての値がカンマ区切りで表示されます。

- 範囲が異なる場合は、A2:A18を適宜調整してください。
- 別の区切り文字が必要な場合は、数式内の","を、希望の記号(例:";"または|)に置き換えてください。
- #NAME?エラーが発生した場合は、マクロが有効になっていることと、UDF の名前が完全に一致していることをご確認ください。
ヒント:他のブックでもこの関数を再利用したい場合は、VBA コードをそのブックのモジュールにもコピーしてください。
方法4:高度なExcel 数式を使用する(代替ソリューション)
UNIQUE 関数が使えない環境(例:Excel 2016 やExcel 2019)では、従来のIF、COUNTIF、およびTEXTJOIN 関数を組み合わせた配列数式で、重複しない値を連結できます。この方法は確かに機能しますが、計算負荷が高いため小規模なデータセットに最適です。
1。対象セル(例:C2)に次の配列数式を入力し、入力後はCtrl+Shift+Enterを押してください(Enter キー単体では押さないでください)。
=TEXTJOIN(", ", TRUE, IF(MATCH(A2:A18, A2:A18,0) = ROW(A2:A18) - MIN(ROW(A2:A18)) +1, A2:A18, "")) 2。数式の前後に波括弧{}が表示されている場合、その数式は正しく配列数式として入力されています。この数式は、範囲 A2:A18 から重複を除いた値をカンマ区切りで連結して返します。
注:この方法では、データに応じて範囲を調整する必要があります。範囲が非常に広い場合、計算に時間がかかることがあります。配列数式に不慣れな場合は、前述の VBA またはアドインによるソリューションをご検討ください。
ユニークな値を一覧表示し、対応する値を連結する
データレポート作成では、ある列から重複のない値を抽出するだけでなく、別の列の対応するエントリを集計したり連結したりしたいケースがよくあります。たとえば、営業担当者ごとに販売したすべての製品を一覧化したり、同じ ID に関連付けられたすべてのエントリをまとめてコンパイルしたりするような場合です。最適な方法は、データの複雑さや、自動化・使いやすさ・互換性のうちどれを優先するかによって異なります。
方法1:TEXTJOIN 関数と UNIQUE 関数を使用する
Excel 365 またはExcel 2021 をご利用であれば、UNIQUE 関数と FILTER 関数を TEXTJOIN 関数と組み合わせることで、完全に数式に基づいた堅牢なアプローチが実現できます。この方法は、1 つの値が複数のレコードに関連付けられており、それらの関連レコードを区切り文字付きのリストとしてまとめて表示したい場合に特に効果的です。
1。空の列に、次の数式を入力して列 A の重複しない値を一覧表示します。
=UNIQUE(A2:A17) 
2。次に、各重複しないエントリに対応する列 B の値を連結するには、重複しない値が表示されている列の隣(例:重複しない値が D2 から始まる場合は E2)に次の数式を入力し、必要に応じて下方向にコピーしてください。
=TEXTJOIN(", ", TRUE, FILTER($B$2:$B$17, $A$2:$A$17 =D2)) 
- UNIQUE(A2:A17)は列 A から一意の項目の配列を作成します。
- FILTER(B2:B17, A2:A17 = D2)は、D2 にある各ユニークな値に対応する列 B のすべての値を含む配列を生成します。
- TEXTJOIN(", ", TRUE, ...)は、これらの対応する値をカンマで区切って結合します。
- 別の区切り文字が必要な場合は、TEXTJOIN 内の", "を目的に応じて変更してください。
- エラーを回避するには、数式内の範囲が同じ長さであることを確認し、FILTER 関数が一致結果を返せない場合にもエラーが発生しないようにしてください。
- このアプローチは、データの変更に応じて結果が自動的に更新されるため、動的な集計表に最適です。
方法2:Kutools for Excel を使用する
Kutools for Excel には「高度な行のマージ」というツールが備わっており、重複しない値でデータをグループ化し、選択した区切り文字で対応する値を結合するための専用機能を提供します。これは、数式やコードの記述に不慣れなユーザー向けのグラフィカルなソリューションとして適しています。特に大規模なデータセットや、定期的なレポートや継続的なデータメンテナンスなど、頻繁に再グループ化が必要な場面で非常に有用です。
変更を行う前に、元のデータを別の場所にコピーしてバックアップすることをお勧めします。その後、以下の手順に従ってください。
- 整理したいデータの範囲を選択してください。
- 次に、「Kutools」>「結合と分割」>「高度な行のマージ」へ移動してください(下図参照)。

- 開いたダイアログボックスで:
- 重複を結合する列を選択し、「操作」列でそれを「主キー」として設定します。
- 集計したい列(連結する値)を選択し、「操作」の下にあるドロップダウンリストから希望の区切り文字を指定してください。
- 実行するには、OKをクリックしてください。

結果:
Kutools は、設定に基づいてデータを再構成し、重複のないエントリを抽出して関連するすべての値を連結します。
- 誤って操作してしまった場合は、Excel の「元に戻す」機能(Ctrl+Z)を使って、すぐに元の状態に戻してください。
- このプロセスは数百〜数千件のレコードを含むデータセットにも対応し、さまざまな区切り文字をサポートします。
方法3:VBA コードを使用する
VBA スクリプトを使用すると、データの抽出および集計方法を完全に制御できます。このアプローチはすべてのバージョンのExcel で使用でき、カスタムワークフローや自動化、あるいは UNIQUE や FILTER などの関数が利用できない環境に特に適しています。データ構造が頻繁に変更される場合でも、この VBA ソリューションは簡単に調整可能です。
以下のコードを使用するには、次の手順に従ってください。
1。ALT + F11を押して、VBA エディターを開きます。
2。[挿入]>[標準モジュール]を選択し、開いたモジュールウィンドウに次のコードを貼り付けてください。
VBA コード:重複しない値を一覧表示し、対応するデータを連結する
Sub test()
'updateby Extendoffice
Dim xRg As Range
Dim xArr As Variant
Dim xCell As Range
Dim xTxt As String
Dim I As Long
Dim xDic As Object
Dim xOutputRg As Range
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the data range", "Kutools for Excel", xTxt, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
If xRg Is Nothing Then Exit Sub
If xRg.Areas.Count > 1 Then
MsgBox "Does not support multiple selections", , "Kutools for Excel"
Exit Sub
End If
If xRg.Columns.Count <> 2 Then
MsgBox "There must be only two columns in the selected range", , "Kutools for Excel"
Exit Sub
End If
Set xOutputRg = Application.InputBox("Please select the output cell", "Kutools for Excel", Type:=8)
If xOutputRg Is Nothing Then Exit Sub
xArr = xRg
Set xDic = CreateObject("Scripting.Dictionary")
xDic.CompareMode = 1
For I = 1 To UBound(xArr)
If Not xDic.Exists(xArr(I, 1)) Then
xDic.Item(xArr(I, 1)) = xDic.Count + 1
xArr(xDic.Count, 1) = xArr(I, 1)
xArr(xDic.Count, 2) = xArr(I, 2)
Else
xArr(xDic.Item(xArr(I, 1)), 2) = xArr(xDic.Item(xArr(I, 1)), 2) & "," & xArr(I, 2)
End If
Next
xOutputRg.Resize(xDic.Count, 2).Value = xArr
End Sub
3。F5を押してスクリプトを実行すると、データ範囲の選択を求めるポップアップが表示されます。必ず2 列を選択してください:1 列目は重複しない値、2 列目は対応する値です。

4。OKをクリックした後、結果テーブルの開始セルを選択します。

5。OKをクリックすると、コードの重複しない値とその関連データを連結したテーブルが生成されます。

- 列数に関するエラーが表示された場合は、選択範囲が2 列のみを含んでいることをご確認ください。
- 区切り文字をカンマから別の記号に変更する必要がある場合は、次のコード行を
xArr(xDic.Item(xArr(I,1)),2) = xArr(xDic.Item(xArr(I,1)),2) & "," & xArr(I,2)のカンマ部分を必要に応じて調整してください。 - 新しい VBA スクリプトを実行する前に、必ずファイルをバックアップしてください。
まとめると、Excel には重複しない値を連結して関連データを統合するさまざまな方法があります。最新版のExcel では、数式ベースの方法が高速かつ動的ですが、VBA やKutools のソリューションはより広い互換性と高度な制御を実現します。データサイズや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 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得

