【发布时间】:2016-01-18 14:44:03
【问题描述】:
我有一个非常困难的问题,我已经尝试解决了几天,非常感谢一些帮助,因为我已经尝试完全研究这个问题。 一张纸我在 32 位 Excel 2010 中有一个数据库(18 列和 72,000 行),因此它是一个大型数据库。在这张表上,我还有一些条目可以自动过滤某些列,以及一个高级过滤器。当我运行高级过滤器时,数据过滤器正好在 1 秒内。如果我运行自动过滤器(通过 vba 宏)然后运行高级过滤器后记,高级过滤器需要 60 秒才能运行,即使 将 autofiltermode 设置为 false。这是我尝试过但没有运气的方法
- 删除工作表上的所有形状
- 工作表上没有 cmets,因此无需删除
- 删除所有常规和条件格式
- 关闭自动过滤模式
- 将工作表上的所有单元格文本设置为 WrappedText = False
- 取消保护工作表
- 取消隐藏任何行和列
- 删除任何排序 (.sort.sortfields.clear)
还有什么可能导致此代码运行速度慢 60 倍,但只有在自动过滤器先前在工作表上运行之后,我怎样才能将其返回到该状态?任何和所有的帮助将不胜感激
【问题讨论】:
-
如果您可以发布一组精确的步骤来复制问题,或者显示问题的示例工作簿,将会有所帮助。
-
感谢蒂姆的建议。该工作簿很大并且是为客户设计的,所以我不能在此处包含它,但是导致问题的步骤相对简单。
-
我忘记添加我已将自动计算设置为手动、禁用事件并将屏幕更新设置为 False数据过滤器集。一旦我运行自动过滤器(就地过滤器),然后清除自动过滤器。然后再次尝试高级过滤器,它需要 60 倍的时间
-
看来您的情况很难复制。使用 30k 行时我没有看到任何减速:自动过滤前后没有不同。
标签: excel excel-2010 vba