VBA:从集合创buildpivotTable或使用更好的algorithm?

我想知道如何,或者如果可能的话,使用VBA给一个集合创build一个pivotTable。 或者改进我的代码的当前algorithm。

目前,我有一个约28000项目的收集。 每件商品都有唯一的标识,商品编号和价格。 我想要生成一个具有最低价格的唯一标识,部件号的新集合。 所以我在想,生成pivotTable将聚合所有的项目号码,并find最低价格。 那么基于那个表,我可以生成一个新的集合,还是应该改进我的algorithm?

例如:

item[unique_id]: item number, price Item[1]: 11111, 10 Item[2]: 22222, 2 Item[3]: 11111, 3 Item[4]: 11111, 15 Item[5]: 22222, 1 Item[6]: 33333, 2 

然后结果集合会是这样的:

 Item[3]: 11111, 3 Item[5]: 22222, 1 Item[6]: 33333, 2 

目前,我有代码来执行以下操作来创build新的集合

 For Each Item in OriginalCollection ' Temp item holder for comparison Set minItem = item i = 1 Do While (i <= OriginalCollection.Count) if OriginalCollection(i).itemNumber = minItem.itemNumber And OriginalCollection(i).price < minItem.price Then Set minItem = OriginalCollection(i) ' reduce the size of collection, so fewer iterations OriginalCollection.Remove (i) OriginalCollection.Remove (minItem.Id) End if i = i + 1 Loop If Not InCollection (MinCollection, minItem.Id) Then MinCollection.Add minItem, minItem.Id End If Next item 

先谢谢你。

任何时候我需要完成你正在寻找的东西,我只是按照物品编号,然后价格sorting表。 我假设你的数据在单元格A1:C28000。 在相邻列的单元格中,从D2开始,input公式: =if(b2=b1,"",1) 。 这告诉我什么时候项目编号有变化。 每次物品编号发生变化时,我知道我已经find了新物品的最便宜的价格(因为每组物品编号按升序sorting)。 在列D中将该公式复制到项目列表的长度中。

打开你的自动filter,并过滤D列中值为1的位置。 这些都是你的每个项目的最低价格。 (调整,如果你的第一个项目没有重复;即只是添加列标题)

这种方法不使用数据透视表,但根据您的问题描述,我不知道你需要他们。