【发布时间】:2014-08-30 10:55:10
【问题描述】:
我有一组数据,格式如下,虽然非常简化:
- 经销商名称、帐户代码、价值
- 经销商1, A-1, 5
- Dealer2, A-1, 10
- 经销商1、A-2、20
- Dealer2, A-2, 15
- 经销商3、A-3、5
我正在努力实现最终结果,该结果为我提供由 AccountCode 汇总的数据,因此在上述数据的情况下如下:
- 账户代码,价值
- A-1, 15
- A-2, 35
- A-3, 5
我通过创建一个名为 OutputData 的不同帐户代码数组来完成此操作,然后通过数据将帐户代码与 SelectedDealerData 中的同一字段进行比较并将其添加到现有值中:
For i = 0 To UBound(SelectedDealerData)
For j = 0 To UBound(OutputData)
If SelectedDealerData(i).AccountNumber = OutputData(j).AccountNumber And SelectedDealerData(i).Year = OutputData(j).Year Then
OutputData(j).Units = OutputData(j).Units + SelectedDealerData(i).Units
Exit For
End If
Next j
Next i
大约有 10,00 个经销商和 600-1000 个帐户代码,因此这意味着很多不必要的循环。
有人可以为我指出更有效的解决方案吗?我在想某种字典比较,但我不确定如何实现它。
【问题讨论】:
-
这是在 Excel / Access 中吗?如果是在 Excel 中,为什么不直接使用
=SUMIFS之类的工作表函数
标签: arrays vba dictionary collections