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

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

Excelで複数の列から一意の値を抽出するにはどうすればよいですか?

Author Xiaoyang Last modified
A screenshot of an Excel dataset containing multiple columns with some repeated values

Excelで複数の列に広がるデータセットを扱うことがよくある場合、同じ列内または異なる列間で特定の値が重複している状況に直面することがあります。多くのレポート作成やデータ分析タスクでは、どこにあっても全体の選択範囲内で一度しか出現しないすべての一意の値を特定し、抽出することが必要になります。これを手動で行うと、特に大規模なデータセットや複雑なテーブルを扱う場合、時間がかかり間違いやすいです。幸い、Excelにはこれらのユニークな値を効率的に抽出するためのさまざまな方法があります。

このガイドでは、お使いのExcelのバージョンや好みに基づいて使用できるいくつかの解決策を紹介します。たとえば、すべてのバージョンに適した数式、最新バージョンでの動的配列数式、シンプルな結果を得るためのKutools AI アシスタントの使用、視覚的な統合のためのピボットテーブル、複雑なシナリオでの自動抽出のためのVBAコードなどです。


数式を使用して複数列から一意の値を抽出する

組み込みのExcel関数を使ってこの抽出を行いたい場合もあります。このセクションでは、すべてのExcelバージョンに対応する配列数式と、Excel 365やExcel 2021などの新しいバージョンで利用可能な動的配列数式の2つのアプローチを使用する方法について詳しく説明します。これらの方法は、直接的な数式ベースのソリューションが必要な場合や、データの変更に伴う頻繁な更新が必要な場合、外部のアドインやコードを避けたい場合に理想的です。

すべてのExcelバージョンに対応する配列数式で複数列から一意の値を抽出する

すべてのExcelバージョンで互換性を持たせるために、配列数式を使用することで、Excelが動的配列をサポートしていない場合でも、複数の列から一意の値を抽出できます。このアプローチは、INDIRECT、TEXT、MIN、IF、COUNTIF、ROW、COLUMN関数を組み合わせて使用するため、さまざまなデータ構造に対応可能です。

データが範囲A2:C9にあると仮定します。セルE2から一意の値を抽出するには、次の手順に従ってください:

1. 出力範囲の最初のセル(E2など)をクリックし、以下の配列数式を入力します:

=INDIRECT(TEXT(MIN(IF(($A$2:$C$9<>"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0),ROW($2:$9)*100+COLUMN($A:$C),7^8)),"R0C00"),)&""

注意:この数式では、
  • A2:C9は、一意の値を抽出したいデータ範囲です。
  • E1:E1は、最初に出力するセルのすぐ上にあるセルを指しており、すでに出力されたエントリを追跡するために必要です。
  • $2:$9はあなたのデータの行参照、$A:$Cは列参照です。ワークシートのレイアウトに合わせてこれらを調整してください。
実際のデータが別の場所にある場合は、範囲を更新することを忘れないでください。

A screenshot showing how to use an array formula to extract unique values in Excel

2. 数式を入力したら、Enterキーを押すだけではなく、Ctrl + Shift + Enterを同時に押して配列数式として確定します。正しく行った場合、数式バーに中括弧 {} が表示されます。その後、E2のフィルハンドルを列方向にドラッグします。空白セルが現れるまでドラッグを続けることで、抽出すべき一意の値がなくなったことを示します。このプロセスにより、すべての一意の値がターゲット列に表示されます。

A screenshot showing unique values extracted using the array formula in Excel

この数式の説明:
  1. $A$2:$C$9: 一意の値を確認するための全セルセットを指定します。
  2. IF(($A$2:$C$9<>"")*(COUNTIF($E$1:E1,$A$2:$C$9)=0), ROW($2:$9)*100+COLUMN($A:$C),7^8):
    • $A$2:$C$9<>"" は、空白セルを無視することを保証します。
    • COUNTIF($E$1:E1,$A$2:$C$9)=0 は、まだ抽出されていない新しい値のみが含まれることを確実にします。
    • 両方の条件が真の場合、対応する出力は、セルの行と列に基づく計算となり、一意のインデックス番号を生成します。
    • どちらかの条件が偽の場合、数式は非常に大きな数値(7^8)を返し、誤って選択されることを防ぎます。
  3. MIN(...): 最低のインデックス番号を識別し、データ内の次の利用可能な一意の値の位置を効果的に特定します。
  4. TEXT(...,"R0C00"): インデックスをR1C1形式の有効なセル参照に変換します。
  5. INDIRECT(...): 上記で作成されたセル参照をデータ範囲からの値に変換します。
  6. &"": 数式の結果をテキストとして処理することを強制し、フォーマットの不具合を防ぎます。
この方法はすべてのExcelバージョンで動作します。ただし、配列数式を正しく使用する(Ctrl + Shift + Enterを使用する)ことが重要であり、そうでないと期待される結果が得られないことがあります。また、大規模なデータセットでは配列数式が計算速度を低下させる可能性があるため、最適なパフォーマンスを得るために中程度のサイズのテーブルで使用してください。

 
Excel 365、Excel 2021、および新しいバージョンの数式を使用して複数列から一意の値を抽出する

Excel 365、Excel 2021、または新しいバージョンを使用している場合、動的配列関数を利用でき、複数列から一意の値を抽出する簡単で直感的な方法が提供されます。UNIQUE関数とTOCOL関数は、データを結合して重複を一括で排除するため、特にデータが常に更新される場合や大規模なデータセットを扱う場合に役立ちます。

この方法を使用するには、単に空白のセル(例えばE2、または結果を表示したい任意の場所)を選択し、この数式を入力してEnterキーを押します:

=UNIQUE(TOCOL(A2:C9,1))

Enterキーを押すと、範囲A2:C9からすべての一意の値が数式の下のセルに自動的に展開されます。この機能は特に効率的で、元のデータが変更されると出力も動的に更新され、手動での再読み込みの手間を省きます。

A screenshot showing the UNIQUE function in Excel extracting unique values from multiple columns

パラメータの説明:
  • TOCOL(A2:C9,1): 複数列の値の範囲を単一列に変換し、空白セルを自動的に削除します。
  • UNIQUE(...): 各値を1回だけ抽出し、クリーンで重複のないリストを提供します。
ヒント: データセットが変更される可能性がある場合、この動的な解決策を使用することで、常に最新の一意のエントリリストを確保できます。この方法はMicrosoft 365、2021、以降のバージョンでのみ利用可能であり、古いバージョンを使用している場合は、前述の配列数式を参照してください。
#SPILL! エラーが発生した場合、マージされたセルや出力範囲を妨げている既存のデータがないか確認してください。動的配列は数式セルの下にすべての結果を表示するためのクリアスペースが必要です。
 

Kutools AI アシスタントを使用して複数列から一意の値を抽出する

より簡素化されたアプローチを希望し、手動操作を減らしたい場合、Kutools for ExcelのKutools AI アシスタントを使用すると、複数列から簡単に一意の値を抽出できます。この方法は、特に数式に精通していない場合や、数式エラーのリスクを回避したい場合に価値があります。Kutools AI アシスタントは指示を解釈し、データを自動的に処理するため、初心者や迅速なソリューションを求めるユーザーにとって理想的です。

: Kutools AI アシスタントを体験するには、必ずKutools for Excelをダウンロードしてインストールしてください。Kutoolsは、幅広い自動化機能を持つ使いやすいアドインです。

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

  1. チャットボックスにリクエストを入力します。例えば、「範囲A2:C9から一意の値を抽出し、空白セルを無視し、結果をE2から開始して配置してください:」
  2. 「送信」をクリックするかEnterキーを押して、AIがリクエストを解析したら、「実行」をクリックして実行します。結果は指定した場所に即座に表示されます。

ヒント: このソリューションは、データ抽出のワークフローが変わる場合や自然言語処理機能が必要な場合に非常に便利です。元のデータが完全に一貫していない場合、空のセルが含まれたり除外されたりする可能性があるため、抽出されたリストを再度確認することを忘れないでください。

A GIF demonstrating how Kutools AI Aide extracts unique values from multiple columns in Excel

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

ピボットテーブルを使用して複数列から一意の値を抽出する

ピボットテーブルは、一意の値を抽出するもう一つの便利な方法であり、特に視覚的なツールを好む場合や、出現回数をカウントするなど、一意の項目を要約またはさらに分析する場合に適しています。このアプローチは簡単で数式は不要ですが、設定と若干のデータ並べ替えが必要であり、特に含まれる列が異なる見出しを持っている場合にはそうです。

ピボットテーブルを使用して一意の値を抽出するための推奨プロセスは以下の通りです:

1. データのすぐ左側に新しい空白列を挿入します。例えば、データがB列から始まる場合、新しい列Aを挿入します。この調整により、正しい範囲の統合が確保されます。

A screenshot showing the addition of a blank column before using a Pivot Table in Excel

2. データセット内の任意のセルを選択し、Alt + Dを押し、すぐにPを押して「ピボットテーブルとピボットチャートウィザード」を起動します。ウィザードの最初のステップで「複数の統合範囲」を選択します。これにより、多数の列から値を結合して単一の集計フィールドにすることができます。

A screenshot of the PivotTable and PivotChart Wizard with 'Multiple consolidation ranges' selected

3. 「次へ」をクリックし、「単一ページフィールドを作成する」を選択します。このステップにより、すべてのデータが単一のグループとして整理され、一意の値の抽出が容易になります。

A screenshot showing 'Create a single page field for me' selected in the Pivot Table Wizard

4. 次のステップで、新しい空白列を含むすべてのデータ範囲を選択し、「追加」ボタンをクリックして選択範囲を「すべての範囲」リストに取り込み、「次へ」をクリックします。

A screenshot of the Pivot Table Wizard with data range selection

5. ウィザードの最後のステップで、ピボットテーブルを配置したい場所(新しいワークシートまたは既存のシート)を選択し、「完了」をクリックしてピボットテーブルレポートを生成します。

A screenshot showing where to place the Pivot Table report in Excel

6. 新しいピボットテーブルで、「レポートに追加するフィールドを選択」セクションのすべてのフィールドのチェックを外して、デフォルトビューをクリアします。

A screenshot of a created Pivot Table in Excel for unique value extraction

7. 最後に、「値」フィールドを「行」エリアにドラッグします。ピボットテーブルは、元の複数列範囲からすべての一意の値を整然と一列に表示します。

A screenshot showing unique values extracted using a Pivot Table in Excel

利点: この方法は簡単で数式の知識は必要なく、一意のエントリをさらに分析するための組み込みのピボットテーブル機能(カウント、グループ分け、フィルタリングなど)を利用できます。
制限事項: データは予備的な整理が必要で、元のデータセットが更新された場合、新しい一意の値を見るにはピボットテーブルを更新する必要があります。

VBAコードを使用して複数列から一意の値を抽出する

自動化された抽出が必要な場合や、大規模で不規則なデータセットを扱う場合、VBA(Visual Basic for Applications)コードを使用すると迅速で再利用可能な解決策を提供できます。これは、Excel VBAエディターに基本的な知識を持つユーザー、または手動操作を最小限にしたい繰り返しのタスクに向いています。VBAは、配列数式よりも大量のデータをより効率的に処理できます。

1. Alt + F11を押してVBAエディターを開きます。「Microsoft Visual Basic for Applications」ウィンドウが表示されたら、「挿入」>「モジュール」をクリックして新しいモジュールを追加します。

2. 新しいモジュールに、以下のコードを貼り付けます:

VBA: 複数列から一意の値を抽出する

Sub Uniquedata()
'Updateby Extendoffice
Dim rng As Range
Dim InputRng As Range, OutRng As Range
Set dt = CreateObject("Scripting.Dictionary")
xTitleId = "KutoolsforExcel"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
For Each rng In InputRng
    If rng.Value <> "" Then
        dt(rng.Value) = ""
    End If
Next
OutRng.Range("A1").Resize(dt.Count) = Application.WorksheetFunction.Transpose(dt.Keys)
End Sub

3. F5キーを押してコードを実行します。ダイアログが表示され、データ範囲を選択するよう促されます。関連するすべての列(空白セルを含むものも含む)を選択します。

A screenshot of the VBA prompt for selecting a data range in Excel

4. 「OK」をクリックすると、別のプロンプトが表示され、一意の値を出力する場所を指定します。結果をリストしたい先頭のセル(例:E2)を指定します。

A screenshot of the VBA prompt for selecting the output cell in Excel

5. 「OK」をクリックすると、マクロが自動的に実行され、指定した場所からすべての一意の値が表示されます。

A screenshot showing unique values extracted using VBA in Excel

ヒント: データセットに大量の空白やデータ型が含まれる場合、偶発的な重複や漏れがないか出力を二重チェックしてください。また、特にマクロに慣れていない場合、VBAを実行する前にワークブックを保存することをお勧めします。

トラブルシューティングと実用的な提案:
  • 数式を使用中に #VALUE!#SPILL! のようなエラーが発生した場合、範囲を確認し、出力エリアがクリアであることを確認してください。
  • データ範囲に隠し行や結合されたセルがないか常に確認してください。これらは一意の値の抽出の正確さに影響を与える可能性があります。
  • 配列および動的配列数式は変更とともに自動的に更新されますが、高度なフィルターやピボットテーブルの解決策は手動での更新または再実行が必要になる場合があります。
  • 繰り返しのタスクについては、一貫性とスピードのためにVBAを使用して抽出を自動化することを検討してください。
  • 特に複雑なワークブックの場合、大量の抽出や自動化ルーチンを適用する前にデータをバックアップしてください。

関連記事:

  • リストから一意および異なる値の数をカウントする
  • いくつかの重複項目を含む長いリストがあり、特定の列に存在する一意の値(一度しか出現しない値)や総異なる値の数をカウントしたいとします。この記事では、Excelで一意および異なるエントリを効率的にカウントする方法を説明します。
  • Excelで条件に基づいて一意の値を抽出する
  • たとえば、A列の特定の条件に基づいてB列から一意の名前のみを抽出し、スクリーンショットのように結果を得たいとします。このチュートリアルでは、一意の値を抽出する際に条件を適用する方法を示します。
  • Excelでは一意の値のみを許可する
  • ワークシートの列に一意のエントリのみを許可し、重複値を防ぎたい場合、この記事では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日間フル機能お試し —— 登録やクレジットカード不要
  • コストパフォーマンス最適 —— 個別購入よりお得