VBA|Dictionary|dict(key) = dict(key) + 1|キー単位で件数をカウントする
■ 基本構文
dict(key) = dict(key) + 1key:集計条件をまとめた一意の文字列
戻り値
指定キーに対応する 数値(Long相当)
キーが未登録の場合は 0 として扱われる
■ サンプルコード
Process × RunId × Level 単位でログ件数をカウントする
役割:サマリー1行=1件として、集計キーの件数を加算する
理由:COUNTIFSの複数条件カウントを高速に置き換えるため
注意:dictは Scripting.Dictionary として事前に生成しておく
Dim dict As Object
Set dict = CreateObject("Scripting.Dictionary")
Dim key As String
key = proc & "|" & runId & "|" & lvl
dict(key) = dict(key) + 1出力結果
初めて出現したキー
0 + 1 → 1 として登録される
2回目以降
既存値に +1 され、件数が蓄積される
■ 備考
この書き方は 件数カウント専用の省略記法
dict.Add を明示しないため、コードが短く読みやすい
COUNTIFS のような 範囲全走査が発生しない
「1行=1ログ」という前提の集計に最適
値を数値以外(配列・オブジェクト)にする用途には不向き
内部的には以下と同等の意味を持つ
If dict.Exists(key) Then
dict(key) = dict(key) + 1
Else
dict.Add key, 1
End Ifいいなと思ったら応援しよう!
技術メモや学習の整理として書いています。
もし内容が役に立ったり、続きを読みたいと思っていただけたら、
応援として受け取らせてもらえたら嬉しいです。