9

我发现在表格结构或普通单元格中插入行 - 手动或其他方式 - 非常非常慢。就像在没有条件格式的表格中(仅包含文字字符串)或相邻单元格中插入 7 行需要 10 多分钟。

该工作簿有 45 个工作表和 20 个表,其中较大的表具有大约 10KB 的 XML 文件。有 33MB 的电子表格 XML,大多数约为 300KB,其中 5 个超过 1MB,一个为 15MB。它相当复杂但并不庞大。所有的计算都很好地从左到右从上到下,从右表到左表,我主要设法避免使用数组公式。所有表格都有规则的结构,计算的列只有一个公式。大多数表格列都是计算出来的,只有几个较小的列包含文字数据。

我在几张纸上确实有很多条件格式,但我一直非常小心地保持它的合理性并阻止它碎片化:整张纸我有大约 45 条规则,这些规则被概括为涵盖所有列。格式化决策的主要处理作为辅助列移动到表格中,正如我所说,结构非常规则。

似乎这些类型的编辑不是线程安全的,因此只有一个处理器正在加载并且磁盘活动非常少。我无法理解excel一直在做什么。当然,我将计算设置为手动...

我已经看到将此类事情归因于增加的行和列限制的评论,但我不明白为什么这应该是一个因素。如果我查看电子表格的 XML 文件,就会发现只有被值或公式占据的行和列的代码。那么,为什么无人居住的细胞在起作用呢?

这对我的工作效率产生了巨大的影响——尽管我在新发现的空闲时间通过阅读这样的网站学到了很多东西。我真的需要弄清楚问题是什么,这样我才能尽可能避免或解决这个问题。

有人可以帮我吗?

以防万一人们对此感到疑惑,答案是在 Excel 中使用电源查询和电源视图。我发现中等(50 万行)数据集以及复杂的结构和转换都可以顺利进行。我不再在表格中使用公式。另一件事是,这自然会导致您获得强大的双功能。这就是我的建议。

4

3 回答 3

4

较长的插入时间可能是由于引用整列或整行的 INDEX(或其他函数)。

我有一个非常相似的问题:不太复杂的工作表(大约 2500 行,有 15 列数据(来自查询的结果),以及大约 10 列从查询结果中提取数据的公式。当我插入一列时,第一个列可能会在 4 秒左右插入,但第二次插入需要一分钟。哎呀!我搜索了互联网,发现了这个站点http://support.microsoft.com/kb/2755145

我的经验:

我在我的工作表中使用了像 =INDEX(11:11,1,MATCH(AC$5,$10:$10,0)) 这样的公式,大约 25000 次。您可以看到每个公式两次引用一整行。显然,当我添加一列时,由于每一行都受到影响,因此我的每个公式都受到影响,Excel 会尽职尽责地努力弄清楚该怎么做。

根据我从微软网站上学到的知识,我将公式更改为 =INDEX(QueryResults,ROW()-ROW(QueryHeaders),MATCH(AC$5,QueryHeaders,0)),其中 QueryResults 和 QueryHeaders 是简单的命名范围。

在我对整个工作表进行此更改后,插入一列几乎是瞬间的 - 不到一秒钟。

于 2014-10-02T21:55:14.113 回答
1

这听起来像这里描述的问题http://fastexcel.wordpress.com/2012/01/30/excel-2010-tableslistobject-slow-update-and-how-to-bypass/

如果是这样,您必须打破其中一个条件才能绕过它:
要发生这种减速,以下每个条件都必须为真:

A cell within the Table must be selected
The sheet containing the Table must be the Active Sheet
The cell being updated must be on the same sheet as the table, but does not have to be within the table
There must be a reasonable number of formulas in the workbook.


也许您可以通过 VBA 间接进行更新,同时另一个工作表处于活动状态。或者也许将所有公式移动到单独的工作簿会绕过它。
或将您的表格转换回正常范围(如有必要,请使用动态范围名称)

于 2013-10-23T17:59:43.730 回答
0

尝试删除条件格式,然后在主代码完成后使用 vba 重新应用它。为我工作。

于 2013-12-26T08:33:29.603 回答