Excel高级filter运行速度非常慢,但是只有在自动filter运行之后

我有一个非常困难的问题,我一直试图解决几天,我非常感谢一些帮助,因为我已经试图完全研究这个问题。 一张一张我在32位Excel 2010中有一个数据库(18列和72,000行),所以它是一个大型的数据库。 在这张纸上,我也有一些条目来自动筛选一些列,以及一个先进的filter。 当我运行高级filter时,数据完全在1秒内过滤。 如果我运行一个自动filter(通过vbamacros),然后运行高级filterafterwords,高级filter需要60秒运行,甚至将autofiltermode转为false之后。 这是我已经尝试过,但没有运气

  • 删除表单上的所有形状
  • 这张表没有评论,所以没有删除
  • 删除所有常规和条件格式
  • closures自动filter模式
  • 将工作表上的所有单元格文本设置为WrappedText = False
  • 不保护纸张
  • 取消隐藏任何行和列
  • 删除任何sorting(.sort.sortfields.clear)

还有什么可能导致此代码运行速度慢60倍,但只有在自动filter先前运行在工作表上,我怎么能返回到该状态? 任何和所有的帮助将不胜感激

在我的情况下,我以编程方式创build命名范围供以后使用,这些命名范围使用.End(xlDown)function来查找数据集的结尾。 例如:

Set DLPRange = .Range(.Cells(2, indexHeaders(2)), .Cells(i, indexHeaders(2)).End(xlDown)) DLPRange.Name = "DLPRangeName" 

…在我的情况下,创build一个从起始单元格到文档结尾的列范围。 原来这种find范围的“坏”方式并没有被注意到,因为工作簿的文件格式是.xls,最大值为65k行。 当我需要更多的时候,我强迫它创build一个.xlsm格式的工作簿,它有大约1M行。 filter运行在整个列上,尽pipe其中大部分是空的,导致了大量的时间开销。

tl; dr:你已经欺骗了excel,认为它有大量的数据要过滤。 通过检查并确保它只是过滤你认为应该过滤的范围来解决它。

经过试用,大部分错误,我能find一个解决scheme。 我确定几乎所有的行动,即使没有自动filter都会导致这种放缓,我觉得这只是一个Excel的内存问题,所有这些数据(即使有时运行查找,我猜的“caching”然后运行缓慢,所以我做了一个新的临时工作簿,在这个工作簿中,高级filter将数据添加到filter中,然后把这些数据复制到工作簿中,然后closures这个临时工作簿没有保存,这也使代码从1秒运行到.3秒,我从来没有得到缓慢的高级filter运行时间,无论我运行什么代码或我在原始工作簿上做了什么。如果其他人有类似的问题,他们可能会用这个解决scheme来处理大量的数据。

有点晚了,但最近我有一个不太大的数据库(4000+行,70列)相同的问题,并解决它,所以只是分享。 在我的情况下,问题是在数据范围内的包装文本。 将WrappedText设置为false,如你所说的帮助是不够的,你需要replace你正在过滤的范围内的Chr(10)。 巨大的差异。