今天早上,我笨手笨脚地IF(COUNTIF())
在一列中对 16,000 行进行各种迭代。我体验过该COUNTIF()
函数有多慢,因此看到它冻结 Excel 并不令我感到惊讶。
每次我修改整个列的公式时,我都会感到沮丧,总是Excel 冻结。我会打开任务管理器,结束任务,选择“重新启动程序”。我注意到,每次重新启动 Excel 时,重新打开的文档的单元格都会反映出我尝试实施的公式化更改。
因此,当我尝试将新IF(COUNTIF())
功能应用于这 16,000 个单元格时,它总是会无限期冻结,无法执行更改。但每次我通过任务管理器重新启动 Excel 时,它都会反映更改。
我认为 Excel 处理一组计算的能力是一个二元选项:它要么能够使用可用资源执行任务,要么无法执行任务。为什么它只能在重新启动时才能执行任务?
答案1
需要很长时间的是计算当然不是存储你的更改。当你关闭 Excel 并重新启动时,你会看到显示的旧值(现在不正确)和存储的新公式。你基本上是在终止重新计算。下次仍然需要那么长时间......
考虑到您的 COUNTIF 必须循环遍历许多单元格,可能同样有 16000 个单元格(我不知道里面有什么);这个公式被复制了 16000 次。这意味着有 2.56 亿个循环要做。对于每个一,COUNTIF 内部的比较需要进行解释和评估。
第二次运行(完成一次后)会快一点,我想是因为 Excel 内部记住了所有公式都是相同的语法,所以不需要再次解释它们。不过,计算仍需重复 2.56 亿次。