VBA条件复制和粘贴在Excel中;大数据解决方案

时间:2012-12-16 03:59:01

标签: excel excel-vba finance vba

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

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

我一直在努力寻求一种解决方案,以创建一种比我的前任更高效的模型。他在每张表上都进行了v-lookups和索引,这些表引用了这个巨大的数据转储。你可以猜到,文件运行得很慢。

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

这样,v-lookups对于每个工作表都是本地的,并且文件可以更顺畅地运行(除了运行宏的第一个序列可能需要一些comp空间)。

我希望能够对此有所了解,如果解决方案是有效的,也许可以通过编码来实现这一目标。

非常感谢!

2 个答案:

答案 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>