Home » Dictionaryオブジェクトの使い方 » Dictionaryのカウント・個数を取得するExcelマクロ

Dictionaryのカウント・個数を取得するExcelマクロ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

Dictionaryのカウント・個数を取得するExcelマクロ

「scripting.dictionary vba 個数カウント」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

ScriptingライブラリのDictionaryオブジェクトで、要素・項目の個数をカウントするには、VBA(Visual Basic for Applications)でどのようなコードを書けばいいのか、探している方による検索でしょう。

[スポンサードリンク]

Dictionary.Countプロパティで個数を取得

「scripting.dictionary vba 個数カウント」
という検索キーワードからは、ループを回しながらカウントするようなニュアンスが感じられますが、その必要はありません。

DictionaryオブジェクトのCountプロパティを使えば、

Dictionaryのカウント・個数を取得するExcelマクロ

Dictionaryに登録されている、要素・項目の数を取得できます。

Dictionary.Countを使ったサンプルマクロ

簡単なExcelマクロをご紹介しておきます。

アクティブなワークシートのA列に、Dictionaryオブジェクトに登録したいデータを適当に入力してから、以下のマクロを実行してください。

A列に入力されている値の、ダブりのない個数がメッセージボックスに表示されます。


Sub Dictionaryのカウントを取得する()

 Dim dic As Object  ' Scripting.Dictionary
 Dim i As Long

 Set dic = CreateObject("Scripting.Dictionary")

 ' A列のデータをDictionaryに登録
 For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
  If Not dic.Exists(Cells(i, "A").Value) Then
   dic.Add Key:=Cells(i, "A").Value, Item:= Cells(i, "A").Value
  End If
 Next i

 MsgBox dic.Count
 Set dic = Nothing

End Sub

サンプルマクロの解説

カウント・個数を取得しているのは、最後のほうに存在する、
  MsgBox dic.Count
の部分です。

その前は、Dictionaryに項目を追加する処理です。

DictionaryオブジェクトをCreateObjectしておいてから、
  Set dic = CreateObject("Scripting.Dictionary")

A列の1行目から、データの入力されている最終行まで、For~Nextループを回して、
 For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row

既に登録されていないかどうかを、Dictionary.Existsメソッドを使って調べて、

Dictionaryのカウント・個数を取得するExcelマクロ

もし登録されていなければ、
  If Not dic.Exists(Cells(i, "A").Value) Then

Dictionary.Addメソッドで、

Dictionaryのカウント・個数を取得するExcelマクロ

登録を行っています。
   dic.Add Key:=Cells(i, "A").Value, Item:= Cells(i, "A").Value

このサンプルでは、KeyにもItemにもA列に入力されている値を指定しています。

ループを抜けたら、Dictionary.Countプロパティで取得した個数を、メッセージボックスに表示しています。
  MsgBox dic.Count

[スポンサードリンク]

Home » Dictionaryオブジェクトの使い方 » Dictionaryのカウント・個数を取得するExcelマクロ

TrackBack:0

TrackBack URL

Home » Dictionaryオブジェクトの使い方 » Dictionaryのカウント・個数を取得するExcelマクロ

「Dictionaryオブジェクトの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.