Excel VBA:選択したセル範囲に重複データがあるかどうかチェックするユーザー定義関数のサンプルプログラム

指定したセル範囲に指定した値が重複しているかどうかを返すユーザー定義関数を覚書。

引数として、重複があるかどうか探すセル範囲と重複チェックする値を指定し、指定した値がセル範囲の中で重複していればTrue、してなければFalseを返します。

スポンサーリンク

ユーザー定義関数の概要

以下に作成したユーザー定義関数の概要を記載します。

例えば、以下のような表があったとします。

サンプル表

この表の中で重複している名前を探したいとします。(この表では、田中、伊藤が重複しています。)

B列に作成したユーザー定義関数を入力してセル範囲(サンプルではA1~A10)と重複をチェックする値(A列)を指定すると重複している場合はTrue、一意の場合はFalseを返されます。

以下がその結果。

重複結果

ユーザー定義関数の処理概要

作成したユーザー定義関数の考え方(処理ロジック)は、以下の通り。

  1. 引数として重複を検索するセル範囲と重複をチェックする値を受け取る。
  2. ワークシート関数のCOUNTIF関数を利用してチェックする値が指定したセル範囲に何個あるかを取得する。
  3. 重複がない場合COUNTIF関数の結果は、当然"1"を返すが、重複がある場合は、"2"以上の値が返るので、IF文で1より大きい値が返ったら重複しているのでTrueを返すようにする。

ユーザー定義関数のサンプルプログラム

以下ユーザー定義関数のサンプルプログラムコードを記載します。

Function chkDuplicate(chkRng As Range, chkVal As String) As Boolean
Dim rng As Range
    If Application.CountIf(chkRng, chkVal) > 1 Then
        chkDuplicate = True
    Else
        chkDuplicate = False
    End If
End Function
 

使用方法の例

以下に作成したユーザー定義関数の使用方法(入力例)を記載します。

ユーザー定義関数の入力例

ユーザー定義関数を使用する際の注意点

第1引数の重複するセル範囲は、Rangeオブジェクトとして渡すのでダブルクォーテーション(")でくくらないこと。

第2引数のチェックする値は、直接文字を指定する場合は、ダブルクォーテーションでくくって文字列として渡す。

コメント

タイトルとURLをコピーしました