首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从集合中创建pivotTable,还是使用更好的算法?

问从集合中创建pivotTable,还是使用更好的算法?
EN

Stack Overflow用户
提问于 2012-10-22 23:52:19
回答 1查看 351关注 0票数 3

我想知道如何或者如果可能的话,使用给定的集合来使用VBA创建pivotTable。或者改进我的代码的当前算法。

目前,我有一个大约有28000个项目的收藏。每个项目都有唯一的Id、项目编号和价格。我想生成一个具有唯一Id的新集合,即具有最低价格的零件号。所以我在想,生成pivotTable将聚合所有的商品编号,并找到最低价格。然后基于这个表,我可以生成一个新的集合,或者我应该改进我已有的算法?

例如:

代码语言:javascript
复制
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

然后,结果集合将类似于:

代码语言:javascript
复制
Item[3]: 11111, 3
Item[5]: 22222, 1
Item[6]: 33333, 2

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

代码语言:javascript
复制
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

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-23 01:11:39

任何时候我需要实现你想要的东西,我只需要按照商品编号,然后是价格对表格进行排序。我假设您的数据在单元格A1:C28000中。在相邻列的单元格中,以D2开头,输入公式:=if(b2=b1,"",1)。当项目编号发生变化时,它会告诉我。每当商品编号发生变化时,我知道我已经找到了新商品的最便宜的价格(因为每组商品编号都是按价格升序排序的)。将D列中的公式向下复制到项目列表的长度。

打开自动筛选和筛选列D=1中的where值。这些都是每件商品的最低价格。(如果您的第一个项目没有重复项,请进行调整;即,仅添加列标题)

这种方法不使用透视表,但根据您的问题描述,我不确定您是否需要它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13015085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档