重複なしでセルの個数を数えるユーザー定義関数
Excelには、「COUNT」という、値の個数を数えるワークシート関数があります。
同じようにして、重複する値を除き、一意の値だけを数えるユーザー定義関数「COUNTUNIQUE」を作ってみました。
Function COUNTUNIQUE(ParamArray Elements())
Dim a(1000)
Dim c, i, j As Long
Dim flg As Boolean
Dim ub As Long
Dim rng, rngs As Range
ub = UBound(Elements())
i = 0
For c = 0 To ub
Set rngs = Elements(c)
For Each rng In rngs
If Not IsEmpty(rng.Value) Then
flg = True
If i > 0 Then
For j = 0 To i - 1
If rng.Value = a(j) Then
flg = False
Exit For
End If
Next j
End If
If flg = True Then
a(i) = rng.Value
i = i + 1
End If
End If
Next
Next c
COUNTUNIQUE = i
End Function
Dim a(1000)
Dim c, i, j As Long
Dim flg As Boolean
Dim ub As Long
Dim rng, rngs As Range
ub = UBound(Elements())
i = 0
For c = 0 To ub
Set rngs = Elements(c)
For Each rng In rngs
If Not IsEmpty(rng.Value) Then
flg = True
If i > 0 Then
For j = 0 To i - 1
If rng.Value = a(j) Then
flg = False
Exit For
End If
Next j
End If
If flg = True Then
a(i) = rng.Value
i = i + 1
End If
End If
Next
Next c
COUNTUNIQUE = i
End Function
「=COUNTUNIQUE(A1:C10)」のように引数にセル範囲を指定します。
[ 2012年10月2日 | カテゴリー: Excel | タグ: COUNT , VBA , ユーザー定義関数 ]
« 事故を起こしたとき修理代が何円ならば保険を使うか | セル範囲の文字列を結合するユーザー関数 »
コメントを残す