【发布时间】:2013-11-01 20:55:48
【问题描述】:
我发现在表格结构或普通单元格中插入行 - 手动或其他方式 - 非常非常慢。就像在没有条件格式的表格中(仅包含文字字符串)或相邻单元格中插入 7 行需要 10 多分钟。
该工作簿有 45 个工作表和 20 个表格,其中较大的表格包含大约 10KB 的 XML 文件。有 33MB 的电子表格 XML,大多数约为 300KB,其中 5 个超过 1MB,一个为 15MB。它相当复杂但并不庞大。所有的计算都很好地从左到右从上到下,从右表到左表,我主要设法避免使用数组公式。所有表格都有规则的结构,计算的列只有一个公式。大多数表格列都是经过计算的,只有几个较小的列包含文字数据。
我在几张纸上确实有很多条件格式,但我一直非常小心地保持它的合理性并阻止它分裂:整张纸我有大约 45 条规则,这些规则被概括为涵盖所有列.格式化决策的主要处理被移到表格中作为辅助列,正如我所说,结构非常规则。
似乎这些类型的编辑不是线程安全的,因此只有一个处理器正在加载并且磁盘活动非常少。我无法理解excel一直在做什么。 当然,我将计算设置为手动...
我看到 cmets 将这种类型的事情归因于增加的行和列限制,但我不明白为什么这应该是一个因素。如果我查看电子表格的 XML 文件,就会发现只有被值或公式占据的行和列的代码。那么,为什么这些无人居住的牢房在起作用呢?
这对我的工作效率产生了巨大影响 - 尽管我在新发现的业余时间通过阅读此类网站学到了很多东西。我真的需要找出问题所在,以便尽可能避免或解决这个问题。
有人可以帮我吗?
以防万一人们对此感到疑惑,答案是在 Excel 中使用电源查询和电源视图。我发现中等(50 万行)数据集以及复杂的结构和转换都可以顺利进行。我不再在表格中使用公式。另一件事是,这自然会导致您获得强大的双功能。这就是我的建议。
【问题讨论】:
-
插入会导致隐式重写移位单元格中的所有公式以及依赖于移位单元格中任何数据的任何公式 - 我相信。我假设计算链用于确定在插入/删除时可能需要重写哪些单元格,但它可能只是对整个工作簿的直接扫描。
-
是否只在表的末尾插入(如果需要,进行排序)对性能有任何影响吗?
-
但为什么要“转移”空白空间?对于都是常规结构的表引用,该怎么办?如果您更改表内的内容,甚至更改行数,它不应影响通过常规结构的任何引用。 =tablename[@[列名]] 例如。此引用独立于表内容甚至行数。所以是:=Index(tablename[column name], 同样的:match(ref1,tablename[column name 2],0))... 需要做什么?我不明白...
-
不,先生,重新调整表格大小以在末尾添加行同样令人痛苦……这似乎无关紧要。
-
是的,这些都不需要重写 - 但 Excel 无需每次都查看就知道吗?对于这么大的工作簿,它几乎不会缓存依赖链。然而,表格的总数和表格的内部定义确实需要更改。您是逐个插入,还是只插入一个块?