見出し画像

VBA|Dictionary|dict(key) = dict(key) + 1|キー単位で件数をカウントする


■ 基本構文

dict(key) = dict(key) + 1

key:集計条件をまとめた一意の文字列

戻り値
指定キーに対応する 数値(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

いいなと思ったら応援しよう!

Parusの寺小屋 技術メモや学習の整理として書いています。 もし内容が役に立ったり、続きを読みたいと思っていただけたら、 応援として受け取らせてもらえたら嬉しいです。