领先的免费Web技术教程,涵盖HTML到ASP.NET

网站首页 > 知识剖析 正文

VBA中的字典之三,字典如何排序篇二

nixiaole 2025-01-20 15:39:16 知识剖析 14 ℃

前文讲述了通过Keys转换成数组进行排序,这是比较简单的案例,实际应用中,字典的使用会变得复杂,条件也变得多样。因此实际上,我们在更多的使用中,需要对Items进行排序。

如下表,我们需要对各科成绩求和,然后再对总成绩进行排序。

我们讲解一下代码的思路。

  1. 我们利用字典对各科成绩进行求和
  2. 把字典中的Keys和Items转换成数组
  3. 利用Large函数对Items的数组进行求值
  4. 利用Match函数求Items数组取值的位置
  5. 最后得到对应的Keys数组值

代码如下 :

Sub dsort()
    Dim d, arr, brr, crr
    Dim i, j, w
    Set d = CreateObject("scripting.dictionary")
    
    arr = Range("A2:C15")
    For i = 1 To UBound(arr)
        d(arr(i, 1)) = d(arr(i, 1)) + arr(i, 3)
    Next i
    
    '把字典的Keys和Items分别转换成数组
    crr = d.keys
    brr = d.items
    
    For j = 1 To d.Count
        Range("F" & j + 2) = Application.Large(brr, j)
        w = Application.Match(Application.Large(brr, j), brr, 0) - 1
        Range("E" & j + 2) = crr(w)
    Next j
End Sub

利用上面的代码,我们就能输出我们想要的结果了。

在实际应用中,也可以把Keys和Items转换成二维数组,再对数组进行排序。后面我再贴上一份可以对数组进行排序的自定义函数。

另外,我们也可以把排序后的数据,赋值给新的字典,放入内存中,随时可以方便数据的输出。

字典的应用很繁杂,就看使用过程所涉及到的需求。

关于字典排序的内容大概就是这些了。喜欢的朋友请点赞加关注,谢谢!

最近发表
标签列表