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

このマクロを実行すると、次の出力が表示されます。

単一の VBA 番号

メッセージ ボックスには、一意のチーム名が5 つあることが示されています。

一意のチーム名をそれぞれ手動で識別することで、これが正しいことを確認できます。

  • マブス
  • ネット
  • ウォリアーズ
  • 王たち

実はユニークなチーム名が5つあります。

: 別の範囲の一意の値の数をカウントするには、 For Eachループ内のA2:A11を別の範囲に置き換えるだけです。

追加リソース

次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。

VBA: 特定のテキストを含むセルを数える方法
VBA: 範囲内の行数をカウントする方法
VBA: COUNTIF 関数と COUNTIFS 関数の書き方

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です