辞書のキーとアイテムで二次元配列作成
辞書(連想配列)のキーとアイテムで、二次元配列を作りたくなる場面に遭遇。
そういえば、テーブル内の指定した二列で辞書を作る関数を作成したことはあったが、その逆は無かったな。
infoment.hatenablog.com
というわけでな、今回はこれに挑戦してみた。
といっても、あまり大げさなことはしていない。
毎度のごとく、愚直に値を格納するだけだ。
Public Function DictToArray(source_dict As Dictionary, _ Optional first_array_key As Boolean = True) As Variant Dim arr() As Variant ReDim arr(1 To UBound(source_dict.Keys) + 1, 1 To 2) Dim i As Long For i = 1 To UBound(arr) ' Trueは「-1」、Falseは「0」であることを利用して、 ' どちらが1列目になるかを決めている。 arr(i, first_array_key + 2) = source_dict.Keys(i - 1) arr(i, 1 - first_array_key) = source_dict.Items(i - 1) Next DictToArray = arr End Function
それでは、軽くテストしてみよう。
Sub test() Dim Dict As Object Set Dict = CreateObject("Scripting.Dictionary") Dict("りんご") = 100 Dict("みかん") = 200 Dict("ばなな") = 300 Dim arr As Variant arr = DictToArray(Dict) Range("A1:B3") = arr ' 順序入れ替えバージョン。 arr = DictToArray(Dict, False) Range("D1:E3") = arr End Sub
↓ 結果は良好。今後、意外と重宝する予感がする。
参考まで。