我尝试搜索,如果我的搜索技能很弱,请原谅我。我正在尝试减少Excel模型的速度和文件大小,并使其更清晰,所以我想我会用一些AND()语句替换一堆嵌套的IF()语句。我确认逻辑是一样的,但我的文件大小爆炸,我很惊讶。 AND()非常低效,比嵌套的IF()更糟糕吗?我不能分享公式,但是有优化嵌套IF()公式的一般建议吗?
谢谢!
答案 0 :(得分:1)
文件大小不会增加,因为公式设计效率低,但效率低下可能是由不必要的冗长公式引起的。在这两种情况下,它都不是 number 的数字重要的公式(因为它们以纯文本格式存储),与依赖于其他单元格的数量一样多,因为Excel存储了关于每个依赖项的单独的计算链信息。
你可以通过将Excel文件的扩展名更改为.ZIP
,将其打开为压缩文件并检查其中的文件来查看(并查看文件为何如此之大) ,将您文件的先前(较小)版本与此版本进行比较。
.XLSX
文件只是一组压缩的文本.XML
文件。 .XLSM
添加的内容不会超过VBAProject.bin
(二进制文件)。
如前所述,格式 的效率会对文件大小产生巨大影响。这可以通过以下方式改进:
使用条件格式(因为规则可以格式化单元格区域,否则需要为每个单元格存储单独的信息)
使用内置(常见)格式样式而非自定义格式,需要单独存储
文件结构概述 here。
Stack Overflow: How to properly assemble a valid xlsx file from its internal sub-components?
答案 1 :(得分:0)
嵌套IF
的效率高于AND
,因为IF
通常不会费心计算其余的公式不适用,例如
= IF(TRUE,<this>,<that>)
通常,上面等式中的<that>
将被完全忽略。
AND
始终检查所有条件,即使没有必要。例如,考虑一下:
= AND(FALSE,<whatever>,<whatever>,...)
上述等式的结果将始终为FALSE
,因为第一个参数为FALSE
。 (如果第一个参数是FALSE
,则其余参数无关紧要。)尽管如此,AND
仍会检查所有参数。 OR
在这种情况下的行为方式相同:
= OR(TRUE,<whatever>,<whatever>,...)
通过这种方式,IF
更好,因为它们在满足条件后“停止”。
根据电子表格的详细信息(我不知道),这可能会极大地影响计算时间,尤其是在使用易失性公式的情况下,如果您不是,则会将瘟疫传播到电子表格中的其他单元格小心。
但是,我也不喜欢。嵌套的IF
是草率的,难以阅读,难以维护。我几乎总是喜欢查找表。请参阅this question(和接受的答案),了解我正在谈论的内容。