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関数を活用することで、コードを簡潔に保ちつつも強力なデータ処理が可能になります。
一意な値を元にした処理(集計・分類・レポート作成)に、ぜひ本記事の手法をご活用ください。