Excelで複数範囲の重複を除外して結合するユーザー定義関数の紹介
Excelでデータを扱う際、複数の範囲から重複データを除外して結合する場面がしばしばあります。今回は、そのような場面で便利なユーザー定義関数を紹介します。
セットするユーザー定義関数の概要
ここでは作成する関数名を「CombineUnique関数」とします。
「CombineUnique」関数は、複数の範囲を指定して、重複データを除外した上で、結合するためのExcelのユーザー定義関数です。複数のリストを統合し、一意のデータを抽出することが簡単にできます。
Function CombineUnique(ParamArray Ranges() As Variant) As String
Dim i As Long
Dim cell As Range
Dim uniqueValues As Collection
Set uniqueValues = New Collection
On Error Resume Next
For i = LBound(Ranges) To UBound(Ranges)
If TypeName(Ranges(i)) = "Range" Then
For Each cell In Ranges(i)
If Not IsEmpty(cell.Value) Then
uniqueValues.Add cell.Value, CStr(cell.Value)
End If
Next cell
End If
Next i
On Error GoTo 0
Dim result As String
For i = 1 To uniqueValues.Count
result = result & uniqueValues(i) & ","
Next i
If Len(result) > 0 Then
result = Left(result, Len(result) - 1)
End If
CombineUnique = result
End Function
「CombineUnique」関数の使い方
a. 関数のインストール方法
最初に、Visual Basic for Applications (VBA) エディタを開き、新しいモジュールを追加して、上記の「CombineUnique」関数のコードを貼り付けます。これで、「CombineUnique」関数が使えるようになります。
b. 基本的な使い方
「CombineUnique」関数は、以下のように使用します。
=CombineUnique(Range1, Range2, ..., RangeN)
ここで、Range1からRangeNまでの範囲を指定して、重複データを除外した結果を得られます。
c. 複数範囲から重複データを除外する方法
例えば、A1:A5とB1:B5にそれぞれ異なるリストがあり、両方のリストから重複を除外して結合したい場合、次のように式を入力します。
=CombineUnique(A1:A5, B1:B5)
この式により、A1:A5とB1:B5の範囲から重複を除外したデータが結合された結果が得られます。
実用的な応用例
a. 重複したリストを一元化する
例えば、2つの部門からの売上データがそれぞれA列とB列に記載されている場合、重複した顧客データを除外して一元化したいとします。その場合、次のように「CombineUnique」関数を使うことができます。
=CombineUnique(A1:A10, B1:B10)
これにより、A1:A10とB1:B10から重複を除外した顧客データが結合され、一元化されたリストが得られます。
b. 複数シートからのデータ統合
複数のシートからデータを統合する際にも、「CombineUnique」関数は役立ちます。例えば、Sheet1のA1:A10とSheet2のB1:B10から重複を除外して結合したい場合、次のように式を入力します。
=CombineUnique(Sheet1!A1:A10, Sheet2!B1:B10)
この式により、Sheet1とSheet2から重複データを除外し、結合したデータが得られます。
まとめ
「CombineUnique」関数は、複数の範囲から重複データを除外して結合する場面で大変便利なユーザー定義関数です。Excelでデータ処理を行う際に、繰り返しデータの削除や結合が必要な場合に、この関数を活用することで効率的に作業が進められます。ぜひ、「CombineUnique」関数を試してみてください。
コメント