1樓:陽光上的橋
我看出問題了,資料多的時候,隱藏的操作會很慢。加快速度有兩個途徑:
第一個簡單點,for i=11 ti h的迴圈不要檢查cells,而是先把第5列內容存放在陣列裡面,在陣列裡面檢查是否應當隱藏。進行隱藏的演算法也優化了一點,就是先根據是否相等判斷出是否隱藏到變數x裡面,然後檢測那一行的狀態是否與x相同,不同才處理,減少處理次數。優化後的**如下:
上面的**通過從陣列裡面判斷,減少了取數時間,隱藏/顯示行之前先檢測一下狀態,減少處理時間,應該有一定的效果。
**還可以進一步優化,逐行掃描去隱藏和顯示的操作仍然非常耗時,進一步優化的思路就是一塊一塊的進行處理,例如在數萬行中篩選出需要顯示的只有幾行(極端就是一行)而其它都要顯示的時候,最最佳狀態下只需要執行三次:前面一段隱藏、中間一段顯示、後面一段隱藏,能把上萬次的**介面操作縮小到三次,效果會大大加強。但是**會很長、很複雜,要用一系列變數記錄判斷的當前行應該隱藏還是顯示,但不立即處理,繼續判斷下一行;如果需要的處理和前面的相同,就記錄需要處理的範圍,繼續下一行判斷;如果需要的處理和之前的不同,那就執行之前的操作,重新記錄。
2樓:匿名使用者
vba**提速常用的方法主要有:
單元格(區域)寫法的選擇
單元格(區域)寫法有3種,以a1單元格為例,使用cell物件寫法:cells(1,1),執行速度最快
使用with語句
with語句不僅僅是簡化了寫法,速度也大大提升了。
儘量不用variant型別
這不用多說吧,使用option explicit是一個好習慣。
excel vba超慢怎麼提速?
3樓:貓叔說dian影
物件,包括所有vba中使用的物件。你的每次呼叫都會耗費比呼叫數字多n倍的資源。下面看2段**,要完成的任務都是向a1:a10000中填充序號。
**1:
sub 運算1()
t = timer
for x = 1 to 10000
range("a" & x) = x
next x
msgbox timer - t
end sub
sub 運算2()
dim arr(1 to 10000, 1 to 1)t = timer
for x = 1 to 10000
arr(x, 1) = x
next x
range("a1:a10000") = arrmsgbox timer - t
end sub
分析:本段**中,先宣告一個10000行1列陣列,然後在迴圈中不是直接輸入到range物件中,而是先存入arr陣列中。最後一次性的把arr陣列中的數字輸入到a1:
a10000區域中。最終執行時間是0.062秒,比**1快了十幾倍。
由上述2段**可以看到,大迴圈中呼叫物件對速度的影響非常的大,在寫**時儘量的規避把vba物件放在迴圈中呼叫。
excel檔案越來越大開啟越來越慢怎麼辦
4樓:
如圖,某個excel檔案,資料內容不多。 但是檔案本身卻變得很大,開啟很慢。別的excel檔案開啟很快開啟,這有這個檔案開啟需要20秒左右,另外在這個檔案中進行其他操作例如查詢替換等操作時候,處理起來也很慢。
導致此現象的原因一般是不小心新增了一些不可見的自選圖形等物件。我們使用以下的方法來完成檢查。點編輯選單中的定位命令。或者直接按快捷鍵ctrl+g,或者按f5
彈出定位對話方塊,在下方點選定位條件。
繼續彈出定位條件對話方塊,在其中選擇「物件」,然後點確定按鈕
如果發現類似圖中,多個圓點的狀況,說明檔案中有物件。在這種情況下按delete刪除,儲存即可。
造成這個情況的原因,一般是因為最初需要在檔案中新增一個物件,由於預設是白色的,不仔細看看不出來。後來由於使用複製貼上拖動等誤操作造成了多個物件佔用檔案空間。
希望本例子說明對大家有幫助。造成檔案過大開啟過慢,另外也有可能是公式較多、條件格式等原因造成的。另例說明。
excel資料量太大,用vba運算依然會耗時太久,執行很慢,該怎麼辦?
5樓:天上人間三
把資料一次性或者分批放到陣列進行運算,速度快很多。不要邊讀取單元格內容(資料)邊進行運算,這樣會很慢的。
6樓:匿名使用者
給你個建議,把所有需要讀寫工作表的操作,用陣列表達,儘量減少讀寫工作表的語句。
這樣讓更多的操作在記憶體中進行,而不是在硬碟上進行。這中間的差異是天壤之別。我原來寫的一個提取內容的sub,提取一個填寫一個,總用時2分40秒。
然後我把要提取的東西全都賦值給陣列,完事以後一次填寫一行,或者完事後一下填寫完,
結果只用了7秒。
7樓:
有一百萬+資料確實比較多了,不過**也可能優化,不過要幾個小時也太誇張了!如果不復雜可以發來看看,如果太複雜,我也不想看了!哈哈
8樓:匿名使用者
如果擅長c#的話,可以使用多執行緒技術嘗試一下
excel vba執行太慢,怎麼提速?
9樓:陽光上的橋
我看出問題了,資料多的時候,隱藏的操作會很慢。加快速度有兩個途徑:
第一個簡單點,for i=11 ti h的迴圈不要檢查cells,而是先把第5列內容存放在陣列裡面,在陣列裡面檢查是否應當隱藏。進行隱藏的演算法也優化了一點,就是先根據是否相等判斷出是否隱藏到變數x裡面,然後檢測那一行的狀態是否與x相同,不同才處理,減少處理次數。優化後的**如下:
上面的**通過從陣列裡面判斷,減少了取數時間,隱藏/顯示行之前先檢測一下狀態,減少處理時間,應該有一定的效果。
**還可以進一步優化,逐行掃描去隱藏和顯示的操作仍然非常耗時,進一步優化的思路就是一塊一塊的進行處理,例如在數萬行中篩選出需要顯示的只有幾行(極端就是一行)而其它都要顯示的時候,最最佳狀態下只需要執行三次:前面一段隱藏、中間一段顯示、後面一段隱藏,能把上萬次的**介面操作縮小到三次,效果會大大加強。但是**會很長、很複雜,要用一系列變數記錄判斷的當前行應該隱藏還是顯示,但不立即處理,繼續判斷下一行;如果需要的處理和前面的相同,就記錄需要處理的範圍,繼續下一行判斷;如果需要的處理和之前的不同,那就執行之前的操作,重新記錄。
手機執行越來越慢怎麼處理?手機執行特別慢怎麼辦
若使用的是vivo手機,手機執行慢的處理方法如下 1 關閉後臺軟體,釋放手機執行記憶體 2 進入手機i管家 空間管理 空間清理,掃描並清理快取垃圾檔案 3 在桌面上長按軟體圖示 應用資訊 儲存或設定 應用與許可權 應用管理 找到相應的軟體 儲存,點選 清除資料 和 清除快取 操作時請提前備份軟體資料...
Mac執行速度越來越慢怎麼辦,Mac執行速度變得越來越慢怎麼辦
電腦變慢的原因,大多數情況下是因為硬體的效能,也有因為軟體的問題。硬碟空間過少 硬碟空間過少是mac執行變慢很大的一個因素,各種操作總需要用到快取空間,可利用空間過少就需要系統不斷的刪除快取檔案導致執行緩慢。如果硬碟可用空間增加,可快速提升mac執行速度。解決辦法 清理硬碟沒有用的東西。老版本的os...
手機充電越來越慢,怎麼回事,手機充電越來越慢了,是什麼原因?
瘋狂的王老闆 01原因 這裡的原因很多,如電壓不穩,電池內部保護 鋰電池充電保護,防止頻繁充電 放電過程與充電過程錯亂 所用的充電器插頭不同 充電線沒有插好 充電介面或者接頭受到汙染等等。但具體是哪種原因則需要根據你自己平時的操作習慣來判斷。但值得說的是,這種現象很正常,不代表你的電池有問題,請放心...