メインコンテンツへスキップ

Kutools for Office — 1つのスイート、5つのツールで、もっと多くのことを成し遂げましょう。

Excelで一意の値を連結するにはどうすればよいですか?

Author Xiaoyang Last modified

スプレッドシートを操作する際、列から一意の値だけをマージ(連結)したり、一意のエントリとその対応するレコードをまとめたリストを作成する必要が生じることはよくあります。重複を処理し、要約情報を提示することは、データを整理するだけでなく、レポートをより明確で洞察に富んだものにします。Excelでは、これらの目標を達成するための実用的な方法がいくつかあり、組み込み関数を使用する方法から高度なアドインやカスタムコードを利用する方法まで多岐にわたります。このチュートリアルでは、一意の値を連結し、関連データとともに一意のエントリをリスト化する複数の方法について詳しく説明します。紹介するソリューションは、異なるExcelバージョンやユーザーの好みに対応しており、最適な方法を選択するのに役立ちます。

列からの一意の値のみを連結する

一意の値をリスト化し、対応する値を連結する


列からの一意の値のみを連結する

Excelでのデータ分析中に頻繁に行うタスクの一つは、列内の異なるエントリのみを単一のセルにマージすることです。これは特に、要約レポートを作成する場合や、リスト内の重複する値を避ける場合、またはさらなる処理のためにデータを準備する場合に役立ちます。使用する方法は、Excelのバージョン、データセットのサイズ、そして数式やコードに対する慣れ度合いによります。以下の方法は異なるニーズに対応し、それぞれの考慮事項を強調し、正しい実行を確保するための実用的なヒントを提供します。

方法1:TEXTJOIN および UNIQUE 関数を使用する

Excel 365およびExcel 2021のユーザーにとって、TEXTJOINとUNIQUE関数の導入により、列の一意の値を組み合わせることが簡単かつ柔軟に行えるようになりました。

このソリューションは、データ列が連続しており、選択した区切り文字を使用してすべての一意の項目を単一のセルに迅速に統合したい場合に最適です。これにより、重複が自動的に排除され、監査が容易になり、範囲や区切り文字を必要に応じて変更できます。ただし、このアプローチは最新のExcelバージョンでのみ利用可能であり、古いバージョンではUNIQUE関数がサポートされていないことに注意してください。

結果を表示したいセルに、次の数式を入力してください(データがセルA2:A18にあると仮定します):

=TEXTJOIN(", ", TRUE, UNIQUE(A2:A18))

 apply TEXTJOIN and UNIQUE functions to concatenate unique values

この数式の説明:
  • UNIQUE(A2:A18) は、重複エントリをフィルタリングし、範囲A2:A18から一意の値のみを返します。
  • TEXTJOIN(", ", TRUE, ...) は、これらのユニークな値をカンマとスペースで区切って1つのセルに結合します。TRUE引数により、空のセルは連結時に無視されます。

役立つヒントとトラブルシューティング:

  • お使いのExcelバージョンがUNIQUEおよびTEXTJOIN関数に対応していることを確認してください。#NAME? エラーが表示される場合は、古いバージョンを使用している可能性があります。
  • TEXTJOINで使用される区切り文字は、"," や "|" など、任意のものを変更できます。
  • 元の範囲にデータを追加または削除すると、数式が自動的に更新されます。
  • 意図しない余分なスペースや区切り文字を避けるために、数式の区切り文字引数を再度確認してください。

方法2: Kutools AI アシスタントを使用する

数式を記述せずに一意の値を連結する迅速で完全自動化された方法が必要な場合、Excelの「Kutools」の「AI アシスタント」ツールは、すべてのスキルレベルのユーザーが時間を節約できる実用的なソリューションを提供します。この方法は、特にExcelの高度な数式に精通していない場合や、データが頻繁に変更され、繰り返しのタスクが必要な場合に役立ちます。

Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...

Kutools for Excelをインストール後、「Kutools」>「AI アシスタント」をクリックして「Kutools AI アシスタント」ペインを開きます。

  1. 結合したい値を含むセルを選択し、選択が目的のデータと一致することを確認します。
  2. チャットボックスに要求を記述します。例えば、次のように入力できます:
    選択した範囲の一意の値をカンマで連結し、結合結果をセルC2に入れる
  3. 押す Enter キーを押すか、 「送信」 ボタンをクリックします。AIがリクエストを分析し、処理後に「実行」を押すことで、Kutoolsが操作を実行します。結果は記載通りに返されます。

注意点とヒント:

  • すべてのAI機能にアクセスするために、最新のKutoolsバージョンを使用していることを確認してください。
  • 最良の結果を得るため、テキストコマンドを具体的に記述し、区切り文字とターゲットセルを指定してください。
  • Kutools AIは、大規模な範囲や、さまざまなデータセットに対して繰り返し実行する必要があるワークフローに特に効率的です。

方法3:ユーザー定義関数を使用する

高度な柔軟性が必要な場合、カスタム区切り文字が必要な場合、または複数のワークブックで再利用可能なツールを必要とする場合、VBAでユーザー定義関数(UDF)をコーディングすることで、一意の値を自動的に連結できます。このVBAソリューションはすべてのExcelバージョンと互換性があり、新しい関数の可用性による制限を受けません。

  • ワークブックでマクロを有効にする必要があります。
  • 今後もこのVBAコードを使用する場合は、ファイルを「マクロ有効」(.xlsm)として保存します。
  • 新しいコードを実行する前に、ワークブックの定期的なバックアップを推奨します。

ALT + F11を押してMicrosoft Visual Basic for Applicationsウィンドウを開きます。

2. VBAウィンドウで、挿入 > モジュールをクリックし、次のコードをコピーして貼り付けます:

VBAコード:一意の値を単一のセルに連結する:

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を押して確認します。セルには、指定された範囲からすべての一意の値がカンマで区切られて表示されます。

 concatenate unique values with vba code

  • 範囲が異なる場合は、A2:A18をそれに応じて調整してください。
  • 別の区切り文字が必要な場合は、数式の","を好きなシンボル(例:";" または |)に置き換えます。
  • #NAME? エラーが発生した場合は、マクロが有効になっていることと、UDF名が正確に一致していることを確認してください。

ヒント:この関数を他のワークブックで再利用するには、VBAコードをそれらのモジュールにもコピーしてください。


方法4:高度なExcel数式を使用する(代替ソリューション)

UNIQUE関数が利用できない環境(例:Excel 2016やExcel 2019など)でも、従来のIFCOUNTIFTEXTJOIN関数の配列数式を組み合わせることで、一意の値を連結できます。このアプローチは動作しますが、計算オーバーヘッドがあるため、小規模なデータセットに最適です。

1. ターゲットセル(例:C2)に、次の配列数式を入力します(入力後、EnterではなくCtrl+Shift+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を使用している場合、TEXTJOINと組み合わせたUNIQUEおよびFILTER関数を使用して、堅牢で完全に数式駆動のアプローチを取ることができます。この方法は、1つの値が複数のレコードに関連するデータの要約に適しており、関連するレコードを区切り文字で区切ったリストを作成したい場合に役立ちます。

1. 空の列に、次の数式を入力して、列Aからすべての一意の値をリスト化します:

=UNIQUE(A2:A17)

 List unique values with formula

2. 次に、各一意のエントリに対応する列Bの値を連結するには、一意の値の隣の列(一意の値がD2から始まる場合、E2など)に次の数式を入力し、必要に応じて下にドラッグします:

=TEXTJOIN(", ", TRUE, FILTER($B$2:$B$17, $A$2:$A$17 =D2))

 List unique and concatenate matched values with formula

この数式の説明:
  • UNIQUE(A2:A17) は、列Aから一意の項目の配列を作成します。
  • FILTER(B2:B17, A2:A17 = D2) は、D2の各一意の値に対応する列Bからすべての対応する値の配列を生成します。
  • TEXTJOIN(", ", TRUE, ...) は、これらの対応する値をカンマで結合します。
  • 別の区切り文字が必要な場合は、TEXTJOINの", "をそれに応じて変更してください。
  • エラーを回避するため、数式内の範囲が等しい長さであることを確認し、FILTERが一致しない場合にエラーを返さないことを確認してください。
  • このアプローチは、データが変更されると結果が自動的に更新されるため、動的な要約表に適しています。

方法2:Kutools for Excelを使用する

Kutools for Excelには、「高度な行のマージ」ツールがあり、一意の値でデータをグループ化し、選択した区切り文字で対応する値をマージするように設計されています。これは、数式やコードを書くことに不慣れで、グラフィカルなソリューションを求めているユーザーに適しています。特に、大規模なデータセットを扱う場合や、定期的なレポートや継続的なデータメンテナンスで頻繁に再グループ化が必要な場合に価値があります。

Kutools for Excelは、300以上の高度な機能を提供し、複雑なタスクを簡素化し、創造性と効率を向上させます。 AI機能と統合され、Kutoolsは正確にタスクを自動化し、データ管理を容易にします。Kutools for Excelの詳細情報...無料トライアル...

変更を行う前に、元のデータを別の場所にコピーしてバックアップを取るのが良い習慣です。その後、次の手順に従います:

  • 整理したいデータの範囲を選択します。
  • 移動します: "Kutools" > "マージ & 分割" > "高度な行のマージ"以下に示すように:
     click Advanced Combine Rows feature of kutools
  • 開いたダイアログボックスで:
    • マージする重複列を選択し、「操作」列で「プライマリキー」として設定します。
    • 集計したい列(連結する値)を選択し、「操作」のドロップダウンリストで希望の区切り文字を指定します。
    • OKをクリックして実行します。
     specify the options in the dialog box

結果:

Kutoolsは、設定に基づいてデータを再編成し、一意のエントリを抽出し、すべての関連する値を連結します。
 List unique and concatenate matched values with 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番目の列に対応する値が含まれるように、必ず2列を選択してください。

 vba code to select data range

4. OKをクリックし、結果テーブルの開始位置となる最初のセルを選択します。

 vba code to select cell to put the result

5. OKをクリックすると、コードが一意の値とその結合された関連データを含むテーブルを生成します。

 vba code to List unique and concatenate matched values

  • 列数に関するエラーが発生した場合は、選択が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のガイダンスや高度なヒントについては、当社の完全なチュートリアルコレクションをご覧ください


最高のオフィス業務効率化ツール

🤖 Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Executionコード生成カスタム数式の作成データの分析とグラフの生成Kutools Functionsの呼び出し……
人気の機能重複の検索・ハイライト・重複をマーキング空白行を削除データを失わずに列またはセルを統合丸める……
スーパーLOOKUP複数条件でのVLookup複数値でのVLookup複数シートの検索ファジーマッチ……
高度なドロップダウンリストドロップダウンリストを素早く作成連動ドロップダウンリスト複数選択ドロップダウンリスト……
列マネージャー指定した数の列を追加列の移動非表示列の表示/非表示の切替範囲&列の比較……
注目の機能グリッドフォーカスデザインビュー強化された数式バーワークブック&ワークシートの管理オートテキスト ライブラリ日付ピッカーデータの統合セルの暗号化/復号化リストで電子メールを送信スーパーフィルター特殊フィルタ(太字/斜体/取り消し線などをフィルター)……
トップ15ツールセット12 種類テキストツールテキストの追加特定の文字を削除など)50種類以上のグラフガントチャートなど)40種類以上の便利な数式誕生日に基づいて年齢を計算するなど)19 種類の挿入ツールQRコードの挿入パスから画像の挿入など)12 種類の変換ツール単語に変換する通貨変換など)7種の統合&分割ツール高度な行のマージセルの分割など)… その他多数
Kutoolsはお好みの言語で利用可能 ― 英語、スペイン語、ドイツ語、フランス語、中国語、その他40以上の言語に対応!

Kutools for ExcelでExcelスキルを強化し、これまでにない効率を体感しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と保存時間を実現します。最も必要な機能はこちらをクリック...


Office TabでOfficeにタブインターフェースを追加し、作業をもっと簡単に

  • Word、Excel、PowerPointでタブによる編集・閲覧を実現
  • 新しいウィンドウを開かず、同じウィンドウの新しいタブで複数のドキュメントを開いたり作成できます。
  • 生産性が50%向上し、毎日のマウスクリック数を何百回も削減!

全てのKutoolsアドインを一つのインストーラーで

Kutools for Officeスイートは、Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proをまとめて提供。Officeアプリを横断して働くチームに最適です。

Excel Word Outlook Tabs PowerPoint
  • オールインワンスイート — Excel、Word、Outlook、PowerPoint用アドインとOffice Tab Proが含まれます
  • 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
  • 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
  • 30日間フル機能お試し —— 登録やクレジットカード不要
  • コストパフォーマンス最適 —— 個別購入よりお得