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

VBA在Excel中有条件复制粘贴;大数据解决方案,excel,finance,vba,Excel,Finance,Vba,我有一个巨大的数据转储,我们每个月都进行,大约有14000行数据,大约12列宽(每个月一个条目)。在所有数据的左侧,我添加了一列,该列使用left()函数获取属性代码,该代码标识行对应的属性(每个属性大约150行,大约100个属性,因此15000行) 我们为每个属性都有一个工作表。我们每月用这个数据转储更新它,然后将它发送给经理,这样他们就可以根据我们刚刚添加的月份数据预测今年剩余的时间 我一直在努力寻找一种解决方案来创建一个比我的前任更高效的模型。他对每个涉及到这个巨大数据转储的表进行了v型查

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

我们为每个属性都有一个工作表。我们每月用这个数据转储更新它,然后将它发送给经理,这样他们就可以根据我们刚刚添加的月份数据预测今年剩余的时间

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

我想到的解决方案可能是一个宏,该宏从主控图纸复制并粘贴每个属性的数据行,并将其粘贴到各个图纸上(然后删除其中的数据以将文件保存在一些空间)

这样,v查找将是每个工作表的本地查找,并且文件可能会运行得更平稳(除了运行宏的第一个序列,这可能会占用一些comp空间)

我希望能对此有一些见解,如果这个解决方案是有效的,也许可以提供一些关于编码以实现这一点的建议


非常感谢

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

在您的情况下,可以使用行标签的属性ID/名称,列标签的属性ID/名称,然后在数据部分中创建数据透视

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

=GETPIVOTDATA("value",Sheet1!$B$4,"Property","propertyName","Month","monthName")
这对我在60k行上使用大量vlookups有帮助。 这确实意味着每次数据更新时都要额外更新数据透视表,但我认为工作簿的速度应该从中受益


显然,将数据直接存储在工作表上会更好,但编写脚本来实现这一点可能会非常繁琐和耗时。

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

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

上面将返回数组中的第1、2和3列。您需要在3个单元格中以数组公式形式输入该值,但如果您有多个使用相同查找值但返回不同列的查找,则性能会大大提高。

谢谢Phillip,这是一个非常酷的解决方案!我不知道这一点。谢谢Rick,不幸的是,我对pivot表不太在行,但我正在我们的入住率表上尝试一下,因为它似乎是适用的。再次非常感谢!