Vbaを使用して範囲内の一意の値をカウントする方法
VBA を使用して範囲内の一意の値の数をカウントするには、次の基本構文を使用できます。
SubCountUnique ()
Dim Rng As Range, List As Object, UniqueCount As Long
Set List = CreateObject(" Scripting.Dictionary ")
'count unique values in range A2:A11
For Each Rng In Range(" A2:A11 ")
If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
Next
'store unique count
UniqueCount = List.Count
' display unique count
MsgBox " Count of Unique Values: " & UniqueCount
End Sub
この特定の例では、 A2:A11の範囲内の一意の値の数をカウントし、その数をメッセージ ボックスに表示します。
次の例は、この構文を実際に使用する方法を示しています。
例: VBA を使用して範囲内の固有の値をカウントする
Excel に次のバスケットボール チーム名のリストがあるとします。
A2:A11 の範囲内の一意のチーム名の数を数えたいとします。
これを行うには、次のマクロを作成できます。
SubCountUnique()
Dim Rng As Range, List As Object, UniqueCount As Long
Set List = CreateObject(" Scripting.Dictionary ")
'count unique values in range A2:A11
For Each Rng In Range(" A2:A11 ")
If Not List.Exists(Rng.Value) Then List.Add Rng.Value, Nothing
Next
'store unique count
UniqueCount = List.Count
'display unique count
MsgBox " Count of Unique Values: " & UniqueCount
End Sub
このマクロを実行すると、次の出力が表示されます。
メッセージ ボックスには、一意のチーム名が5 つあることが示されています。
一意のチーム名をそれぞれ手動で識別することで、これが正しいことを確認できます。
- マブス
- 熱
- ネット
- ウォリアーズ
- 王たち
実はユニークなチーム名が5つあります。
注: 別の範囲の一意の値の数をカウントするには、 For Eachループ内のA2:A11を別の範囲に置き換えるだけです。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA: 特定のテキストを含むセルを数える方法
VBA: 範囲内の行数をカウントする方法
VBA: COUNTIF 関数と COUNTIFS 関数の書き方