gpt4 book ai didi

vba - 我可以将数组写入某个范围并仅重新计算更改的单元格吗?

转载 作者:行者123 更新时间:2023-12-02 10:53:38 24 4
gpt4 key购买 nike

我有一个非常大的数据数组,正在写入一个范围。然而,有时只有数组的少数元素发生变化。我相信,由于我将整个数组写入该范围,所有单元格都将被重新计算。有没有办法有效地编写元素的子集 - 特别是那些已更改的元素?

更新:我基本上遵循此方法来节省写入时间:

http://www.dailydoseofexcel.com/archives/2006/12/04/writing-to-a-range-using-vba/

特别是,我有一个属性集合,其中包含我需要的数据的所有对象(它们是单元格)。然后,我循环遍历所有属性并将值写入数组,对数组进行索引,使其与我要写入的范围的维度相匹配。最后,使用 TheRange.Value = TempArray,我将数组中的数据写入工作表。最后一步会覆盖整个范围,我相信即使在实际值没有改变的单元格中也会导致重新计算。

最佳答案

让我从一些基础知识开始:

  • 当您写入一系列单元格时,即使值相同,Excel 仍会将其视为更改并相应地重新计算。如果您关闭计算也没关系,下次计算范围/工作表/工作簿时,它将重新计算依赖于该范围的所有内容。
  • 正如您所发现的,将数组写入某个范围比逐个单元写入要快得多。将一个范围读入数组确实比逐个单元读取要快得多。

对于仅写入已更改的数据子集的问题,您需要一种快速方法来识别哪些数据已更改。这可能是显而易见的,但需要考虑到,无论该方法是什么,也都需要一些时间。

要仅写入更改的数据,可以通过两种方式执行此操作:返回逐个单元写入或将数组分成更小的 block 。要知道这两种方法是否比写入整个范围更快,唯一的方法是尝试所有三种方法并用您的数据对它们进行计时。如果90%的数据被改变,写入整个 block 肯定会比逐个单元写入更快。另一方面,如果更改的数据仅代表 5%,则逐个单元格可能会更好。性能取决于太多变量,无法提供一劳永逸的解决方案。

关于vba - 我可以将数组写入某个范围并仅重新计算更改的单元格吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8436433/

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