Excel VBA | 値でソートして出力するワンライナー

VBA
スポンサーリンク

即時ウィンドウでDictionaryを「値」でソートして出力するワンライナー

Scripting.Dictionary は順序を保持しませんが、Itemsを配列として取得 → ソート → キーを逆引きして出力すれば「値順」で一覧を確認できます。


ワンライナー例(即時ウィンドウに貼り付け)

For Each v In SortArray(dict.Items): For Each k In dict.Keys: If dict(k)=v Then Debug.Print k & " => " & v: Exit For: Next: Next
VB

補助関数(標準モジュールに置いておく)

Function SortArray(arr As Variant) As Variant
    Dim tmp As Variant, i As Long, j As Long, t As Variant
    tmp = arr
    For i = LBound(tmp) To UBound(tmp) - 1
        For j = i + 1 To UBound(tmp)
            If tmp(i) > tmp(j) Then
                t = tmp(i): tmp(i) = tmp(j): tmp(j) = t
            End If
        Next j
    Next i
    SortArray = tmp
End Function
VB

実行例

Sub TestDictSortByValue()
    Dim dict As Object
    Set dict = CreateObject("Scripting.Dictionary")
    
    dict.Add "C", "Cherry"
    dict.Add "A", "Apple"
    dict.Add "B", "Banana"
    
    Stop   ' ← 即時ウィンドウでワンライナーを実行
End Sub
VB

即時ウィンドウで:

For Each v In SortArray(dict.Items): For Each k In dict.Keys: If dict(k)=v Then Debug.Print k & " => " & v: Exit For: Next: Next
VB

出力:

A => Apple
B => Banana
C => Cherry

💡 ポイント

  • dict.Items をソートして値順に並べる
  • 値からキーを逆引きして「キー => 値」の形式で出力
  • ワンライナーなので即時ウィンドウに直接貼り付けて実行可能

👉 この方法を覚えておけば「Dictionaryを値でソートして一覧表示」できるので、デバッグや確認がさらに効率的になります。

タイトルとURLをコピーしました