簡體   English   中英

Excel Advanced篩選器運行速度很慢,但是僅在運行自動篩選器之后

[英]Excel Advanced Filter Very slow to run, but only after autofilter has been run

我有一個非常困難的問題,我已經嘗試解決了幾天,我將非常感謝您提供的幫助,因為我已經嘗試完全研究此問題。 一張紙我擁有32位Excel 2010中的數據庫(18列和72,000行),因此它是一個大型數據庫。 在此工作表上,我還有一些條目可以自動過濾某些列以及高級過濾器。 當我運行“高級”過濾器時,數據過濾器將在1秒內准確顯示。 如果我運行一個自動過濾,(通過VBA宏)然后運行預先過濾后記中,高級過濾器需要60秒來運行,甚至轉向autofiltermode假 這是我嘗試過的但沒有運氣

  • 去除圖紙上的所有形狀
  • 在工作表上沒有評論,因此請刪除
  • 刪除所有常規和條件格式
  • 關閉自動過濾模式
  • 將工作表上的所有單元格文本設置為WrappedText = False
  • 取消保護工作表
  • 取消隱藏任何行和列
  • 刪除任何排序(.sort.sortfields.clear)

還有什么可能導致此代碼運行慢60倍,但僅在自動篩選器先前已在工作表上運行之后才能運行,如何將其返回到該狀態? 任何和所有幫助將不勝感激

就我而言,我是通過編程方式創建命名范圍供以后使用的,而這些命名范圍使用.End(xlDown)功能來查找數據集的結尾。 例如:

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

...就我而言,這會創建一個從起始單元格到文檔末尾的列范圍。 最初,這種發現范圍的“糟糕”方法沒有引起注意,因為工作簿的文件格式為.xls,並且最多可容納65k行。 當我需要更多信息時,我強迫它創建.xlsm格式的工作簿,該工作簿具有約100萬行。 即使絕大多數過濾器為空,該過濾器也會在整個列上運行,從而導致大量的時間開銷。

tl; dr:您欺騙了excel,以為它具有大量要過濾的數據。 通過檢查並確保它僅過濾您認為應該過濾的范圍來取消欺騙。

經過試用和大部分錯誤之后,我找到了解決方案。 我確定即使沒有自動過濾器,幾乎所有操作都會導致此速度下降,而且我覺得這只是Excel中所有數據的內存問題(即使有時會發現它是我猜中的“緩存”會填滿然后運行緩慢。所以我所做的是使用一個新的臨時工作簿,其中“高級”過濾器會將數據添加到過濾器中,然后我將這些數據復制並將其一部分復制回我的工作簿中。這個臨時工作簿沒有保存它,這也使代碼從1秒運行到.3秒,而且無論我運行了什么代碼或在原始工作簿上執行了什么操作,我都沒有得到較慢的Advanced篩選器運行時間。如果其他人有類似的問題,他們可能會使用它作為海量數據的解決方案。

有點晚了,但是最近我遇到了一個同樣的問題,那就是數據庫不是那么大(4000多行,70列)並解決了它,所以只能共享。 就我而言,問題在於數據范圍內的包裝文本。 如您所說的將WrappedText設置為false是不夠的,您需要在要過濾的范圍內替換Chr(10)。 差異很大。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM