因此,我试图在 Excel 中分析一些数据,但在查找最常见的数字时遇到了一些麻烦。我有一个未知数量的地点,可以有未知数量的捐赠。例如
- 布兰特福德 $50.00
- 布兰特福德 $25.00
- 布兰特福德 $50.00
- 温莎 $200.00
- 魁北克 $25.00
- 魁北克 $100.00
- 魁北克 $50.00
- 魁北克 $50.00
- 魁北克 $25.00
- 魁北克 $50.00
- 魁北克 $50.00
- 魁北克 $25.00
- 魁北克 $100.00
- 魁北克 $40.00
- 温莎 $140.00
- 温莎 $20.00
- 温莎 $20.00
所以我需要使用 VBA 来查找每个位置的计数、总和、平均值和模式(必须通过 VBA 完成,不能只编写关于如何使用高级过滤器/数据透视表执行此操作的说明:()。
所以现在使用 VBA 我有一个字典对象,它将位置名称存储为一个键,并将每个捐赠存储在一个集合中。使用我有计数的集合的计数,可以轻松地循环遍历集合以获得总和,使用我的平均值;但是,我不确定获得该模式的最有效方法。
我知道如果我的数据位于使用 Application.mode 的数组中,我可以找到它,但这似乎不适用于集合 :(。将集合转换为数组虽然是为了找到模式,但我并不觉得最有效的解决方案。我能找到的唯一其他选择是对集合进行排序,然后遍历它们以找到模式。
所以想知道是否有人知道找到集合统计模式的好方法?
Dim locdata As Object
Set locdata = CreateObject("scripting.dictionary")
For counter = 2 To max
mykey = Cells(counter, loccol).value
If Not (locdata.exists(mykey)) Then
locdata.Add (mykey), New Collection
End If
locdata(mykey).Add (Cells(counter, donamountcol).value)
Next counter
For Each k In locdata.keys
locname = k
Cells(counter, 1) = k
Cells(counter, 2) = locdata(k).Count
donationtotal = 0
For Each donvalue In locdata(k)
donationtotal = donationtotal + donvalue
Next donvalue
Cells(counter, 3) = donationtotal
Cells(counter, 4) = donationtotal / CDbl(locdata(k).Count)
'Cells(counter, 5) = Application.mode(locdata(k)) doesn't work :(
counter = counter + 1
Next k
编辑:理想情况下,输出应该是(以魁北克为例)魁北克:计数:10 总和:515 平均:51.5 模式:50