使用 ArrayList 对字典键进行排序

布赖恩

我似乎无法使用ArrayList. 该代码有效,这意味着它从Range("A1:A20"). 它只是不对值进行排序。有任何想法吗?

Option Explicit

Public Sub Test()
    Dim wb As Workbook
    Set wb = ActiveWorkbook

    Dim ws As Worksheet
    Set ws = wb.ActiveSheet

    Dim rng As ListObject
    Set rng = ws.ListObjects(1)

    Dim arr() As Variant
    arr = Application.Transpose(rng.DataBodyRange.Value)

    Dim d As Scripting.Dictionary
    Set d = GetUnique(arr)

    Dim tempD As Scripting.Dictionary
    Set tempD = New Scripting.Dictionary

    Set tempD = SortDictionary(d)

    Dim key As Variant
    For Each key In d.Keys
        Debug.Print key, d.Item(key)
    Next key
End Sub

Private Function GetUnique(ByRef arr() As Variant) As Scripting.Dictionary
    Dim v As Variant
    Set GetUnique = New Scripting.Dictionary
    On Error Resume Next
    For Each v In arr
        GetUnique.Add v, v
    Next v
End Function

Private Function SortDictionary(dicObject As Scripting.Dictionary, Optional xlSortOrder As xlSortOrder = xlAscending) As Scripting.Dictionary
    Dim obj As Object
    Set obj = CreateObject("System.Collections.ArrayList")

    Dim v As Variant
    With obj
        For Each v In dicObject
            .Add v
        Next v
        .Sort
    End With

    Dim tempDic As Scripting.Dictionary
    Set tempDic = New Scripting.Dictionary

    Dim k As Variant
    For Each k In obj
        tempDic.Add k, dicObject(k)
    Next k

    Set SortDictionary = tempDic
End Function
多梅尼克

那是因为当您将已排序的字典分配给 时tempD,您指的是原始未排序的字典。尝试...

For Each key In tempD.Keys
    Debug.Print key, tempD.Item(key)
Next key

希望这可以帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Firebase对ArrayList进行排序

如何使用包含数字的键按键对字典进行排序

在Python中使用日期键对字典进行排序

如何使用 Vector3 键对字典进行排序?

使用可比对ArrayList进行排序

如何使用比较器对ArrayList进行排序?

使用可比对ArrayList进行排序

使用字段对类的 Arraylist 进行排序

使用另一个字典列表中的键对字典列表进行排序

如何在字典中使用某些字段对键进行字典排序-Python 3

使用mergesort vs自定义排序对arraylist进行排序

如何使用多个排序条件对ArrayList进行排序?

使用按长度排序的比较器对名称的ArrayList进行排序

使用日期时间键值对字典进行排序以获得最小和最大的键

如何使用键对列表中的多个字典进行排序(谷歌宝贝名练习_修改)

如何在不使用 OrderedDict 的情况下按字母顺序对嵌套字典进行键排序

如何使用一个键升序和一个键降序按值对嵌套列表的字典进行排序?

使用ArrayList进行气泡排序时出了什么问题?

使用自定义比较器对ArrayList <String>进行排序

使用Collections.sort和比较器对Arraylist进行排序

在Java 8中使用Lambda对ArrayList进行排序

使用具有int值的hashmap对ArrayList进行排序

如何使用stream()。sorted()对带有对象的ArrayList进行排序

Java中使用ArrayList进行基本气泡排序

使用IComparable根据参数对对象的ArrayList进行排序

使用预定义的索引列表对ArrayList进行排序

如何使用比较器对ArrayList <String>进行排序?

使用IComparer比较函数C#对ArrayList进行排序

在 Kotlin 中使用 Int 和 String 对 ArrayList 进行排序