重複のないリストを作成する。

AutoHotKeyでデータベースっぽいものを作るにあたって、
VBAとの機能や関数の違いで、できないことを減らしておきたくて
テストしやすいVBAで試して、調べてを繰り返してみた。

やりたいことは「1,重複のないリストの作成」「2、集計」の二点

ExcelVBAのでは、データ集計は
1、AdvancedFilterで、重複のないリストを作成。
2、「1」のリストを順番に抜き出し、「検索条件」を作成
3、「2」の検索条件を参照して、Dsum(ワークシート関数)で合計値を出していく。
ということ。

重複のないリストについては、元の「データ」と作っていく重複の無い「リスト」を用意して
データの値を全て参照しながら、調べている要素が
「リスト」の方にあるかどうかを調べる。

あれば→無視。次のデータを調べる。
なければ→「リスト」に追加。

というながれで作業をし、最後まで調べたら、「リスト」が完成しているでしょう。

という事だった。

「データ」も「リスト」も配列変数に格納して行った。

30000件から30件の「リスト」を作るのもほとんど一瞬だったので、
スピードとしては十分使えると思う。

集計に関しては

あれば→無視。次のデータを調べる。
なければ→「リスト」に追加。

の部分を

あれば→加算 (「リスト」側の該当に、「データ」側の調べている値を加算。)
なければ→追加 (「リスト」に追加。)

でいけるようだ。

これで、AutoHotKeyへの移植の目処も立った(といっていいかどうか。)

一つ、面倒だったのは

ExcelVBAの二次元配列は、Redim(Preserveのみ)最終次元の上限値しか変更できない。
という事実。

「リスト」の配列は(行、列)を入れ替え(列、行)とした。