0

我有一个巨大的数据转储,我们每个月都会进行大约 14,000 行数据,大约 12 列宽(每个月的条目)。在所有数据的左侧,我添加了一个列,该列使用 LEFT() 函数来获取一个属性代码,该代码标识该行对应的属性(每个属性大约 150 行,大约 100 个属性,因此 15,000 行)。

我们对每个属性都有一个工作表。我们每个月都会使用此数据转储对其进行更新,然后将其发送给经理,以便他们可以根据我们刚刚添加的数据月份对今年剩余时间进行预测。

我一直在努力寻找一种解决方案来创建比我的前任更高效的模型。他在每张涉及这个巨大数据转储的工作表上进行了 v-lookups 和索引。您可以猜到,该文件的运行速度很慢。

我想到的解决方案可能是一个宏,它从该主表复制并粘贴每个属性的数据行,并将其粘贴到各个工作表上(然后删除那里的数据以节省文件空间)。

这样,v-lookups 将是每个工作表的本地文件,并且文件可能运行得更顺畅(除了运行宏的第一个序列,这可能会占用一些压缩空间)。

我希望对此有所了解,如果解决方案是有效的解决方案,也许会提出有关编码以实现此目的的建议。

非常感谢!

4

2 回答 2

0

我发现加快工作簿速度的一件事是旋转我的数据,然后查询数据透视表,而不是使用 vlookups。

在您的情况下,您可以使用属性 ID/Name 为行标签创建一个数据透视,为列标签创建月份,然后在数据部分中使用您的数据。

那么您的公式将如下所示:

=GETPIVOTDATA("value",Sheet1!$B$4,"Property","propertyName","Month","monthName")

在 60k 行上使用大量 vlookup 时,这帮助了我。这确实意味着每次更新数据时都要更新数据透视表的额外步骤,但我认为工作簿的速度应该从中受益。

显然,将数据直接存储在工作表上会更好,但编写脚本来执行此操作可能非常乏味且耗时。

于 2012-12-16T07:41:51.973 回答
0

我需要电子表格的更多细节来建议大重构,但可以快速完成的事情是使用 VLOOKUP 的多列属性:

=VLOOKUP(Lookup_value, Table_array, {1, 2, 3}, 0)

以上将返回数组中的第 1、2 和 3 列。您需要将其作为数组公式输入CTRL SHIFT ENTER3 个单元格,但如果您有多个使用相同查找值但返回不同列的查找,则会有很大的性能增强。

于 2012-12-16T22:38:52.170 回答