Excel VBAでUNIQUE関数を活用し、重複を除いたリストを取得する方法|配列として取得・処理も可能

Excel 365以降では、UNIQUE関数を使って重複のない一覧(ユニークリスト)を簡単に作成できます。
この機能はワークシートだけでなく、VBAからも利用可能で、結果を配列として直接取得し、ループ処理などに活用
することができます。

本記事では、VBAからUNIQUE関数を呼び出してユニークな値を抽出する方法をご紹介いたします。


目次

想定される活用例

  • 顧客名や商品名などの一覧から、重複を除いたリストを生成したい。
  • VBAで配列処理したいが、事前に一意なデータに限定しておきたい。
  • 重複のあるデータ列をそのまま渡して、ユニーク値だけ取得したい。

VBAコードの例

以下のコードでは、セル範囲 B3:B8 にあるデータから、重複を除いたユニークな値だけを抽出し、デバッグ出力しています。

Sub GetUniqueList()

    Dim uniqueItems As Variant

    ' 範囲内の値をUNIQUE関数で抽出(Excel 365以降限定)
    uniqueItems = WorksheetFunction.Unique(Range("B3:B8").Value)

    ' 結果を確認(例:デバッグウィンドウへの出力)
    Debug.Print "ユニークな項目一覧:"
    Dim i As Long
    For i = 1 To UBound(uniqueItems, 1)
        Debug.Print uniqueItems(i, 1)
    Next i

End Sub

各構文のポイント解説

処理内容解説
Range("B3:B8").Value元データの範囲を配列として渡します。縦1列に限定されている必要があります。
WorksheetFunction.Unique(...)ワークシート関数「UNIQUE」をVBA内で呼び出します。
UBound(..., 1)配列の縦方向のサイズ(ユニーク値の数)を取得します。
Debug.Print実際の値は、[表示]→[イミディエイトウィンドウ]で確認可能です。

注意点

  • UNIQUE関数はExcel 365 以降専用です。旧バージョン(Excel 2016以前)では使えません。
  • 対象範囲は1列または1行の配列にする必要があります。多次元データや空白セルの混在には注意してください。
  • セル範囲に1件も値がない場合、Unique(...)はエラーになります。

まとめ

VBAからUNIQUE関数を利用すれば、重複のないリストを手軽に取得し、配列としてそのまま処理に使うことができます。
フィルターや辞書などを使わずに済むため、シンプルかつ高速に処理できるのが大きな特長です。

特にExcel 365ユーザーであれば、UNIQUE関数を活用することで、コードを簡潔に保ちつつも強力なデータ処理が可能になります。
一意な値を元にした処理(集計・分類・レポート作成)に、ぜひ本記事の手法をご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次