gpt4 book ai didi

excel - VBA:从集合创建数据透视表或使用更好的算法?

转载 作者:行者123 更新时间:2023-12-02 00:31:05 34 4
gpt4 key购买 nike

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

目前,我拥有大约 28000 件元素的收藏。每个商品都有唯一的 ID、商品编号和价格。我想生成一个具有唯一 ID、价格最低的零件号的新系列。所以我在想生成数据透视表将聚合所有商品编号,并找到最低价格。然后根据该表,我可以生成一个新的集合,或者我应该改进我现有的算法吗?

例如:

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

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

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

提前谢谢您。

最佳答案

每当我需要完成您正在寻找的东西时,我都会按商品编号对表格进行排序,然后按价格排序。我假设您的数据位于单元格 A1:C28000 中。在相邻列的单元格中,从 D2 开始,我输入公式:=if(b2=b1,"",1)。这会告诉我商品编号何时发生变化。每次商品编号发生变化时,我都知道我找到了新商品的最便宜价格(因为每组商品编号均按价格升序排序)。沿着项目列表的长度复制 D 列中的公式。

打开自动筛选器并筛选 D 列中的值=1 的位置。这些是每件商品的所有最低价格。 (如果您的第一个项目没有重复项,则进行调整;即,只需添加列标题)

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

关于excel - VBA:从集合创建数据透视表或使用更好的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015085/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com