我有一个巨大的数据转储,我们每个月都有大约14,000行数据,大约12列宽(每个月的条目)。在所有数据的左侧,我添加了一个列,该列使用LEFT()函数获取属性代码,该属性代码标识行对应的属性(每个属性大约150行,大约100个属性,因此15,000行) 。
我们为每个属性都有一个工作表。我们每月使用此数据转储更新它,然后将其发送给管理人员,以便他们可以根据我们刚刚添加的数据月份对其余时间进行预测。
我一直在努力寻求一种解决方案,以创建一种比我的前任更高效的模型。他在每张表上都进行了v-lookups和索引,这些表引用了这个巨大的数据转储。你可以猜到,文件运行得很慢。
我对解决方案的想法可能是一个宏,它从这个主表中复制并粘贴每个属性的数据行,并将其粘贴到单个工作表上(然后删除那里的数据以保存文件一些空间)。
这样,v-lookups对于每个工作表都是本地的,并且文件可以更顺畅地运行(除了运行宏的第一个序列可能需要一些comp空间)。
我希望能够对此有所了解,如果解决方案是有效的,也许可以通过编码来实现这一目标。
非常感谢!
答案 0 :(得分:0)
我发现加速工作簿的一件事是转动我的数据,然后查询数据透视表而不是使用vlookup。
在您的情况下,您可以使用行标签的属性ID /名称,列标签的月份以及数据部分中的数据创建数据透视。
然后您的公式将如下所示:
=GETPIVOTDATA("value",Sheet1!$B$4,"Property","propertyName","Month","monthName")
这在60k行上使用大量vlookup时帮助了我。 这确实意味着每次数据更新时更新数据透视表的额外步骤,但我认为工作簿的速度应该从中受益。
显然,将数据直接存储在工作表上会更好,但编写脚本来执行此操作可能非常繁琐且耗时。
答案 1 :(得分:0)
我需要更多关于电子表格的详细信息来建议重构,但可以快速完成的事情是使用VLOOKUP的多列属性:
=VLOOKUP(Lookup_value, Table_array, {1, 2, 3}, 0)
以上将返回数组中的第1,2和3列。您需要在3个单元格中将其作为数组公式CTRL
SHIFT
ENTER
输入,但如果您使用相同的查找值进行多次查找但返回不同的列,则会有很大的性能增强。< / p>