excel vba如何優化,excel表格資料量很大時如何提高vba的效率

2022-05-31 19:25:20 字數 4062 閱讀 1543

1樓:

先按alt+f11

再按f8進行除錯,哪一步不要,就刪除

excel**資料量很大時如何提高vba的效率

2樓:電子科技小百科

1、首先在電腦桌面中,滑鼠右鍵滑鼠,新建一個excel工作簿並開啟。

2、建立一個簡單的**,並輸入一些字串,比如衣服購買**,如下圖所示。

3、接著,滑鼠左鍵單擊【開發工具】選單標籤,並單擊vba按鈕,如下圖所示。

4、然後,在vba編輯的**視窗中,滑鼠右鍵單擊**,選擇新增使用者窗體,如下圖所示。

5、接著,在使用者窗體上,選擇工具箱中的【按鈕】,如下圖所示。

6、接著,滑鼠右鍵選擇【新增**】,在**視窗上,輸入vba**,比如讀取**中的資料,給出訊息提示,如下圖所示。

7、最後,在設計視窗上,滑鼠左鍵單擊使用者窗體上的按鈕,可以看到**中提示讀取**中資料的提示,如下圖所示。

excel vba**優化方法

3樓:匿名使用者

arr=range("s1:s320")

brr=range("a1:a5600")crr=range("b1:b5600")for b = 1 to 320

buyselltime = val(left(arr(b,1), 8))

for bb = 3 to 5600

if buyselltime = val(brr(bb,1)) then

range("t" & b).value = val(crr(bb,1))

exit for

end if

next

next

4樓:匿名使用者

range("s" & b).這個改成cells(b,"s"),其它的幾個地方也改一下,應當能快些。

另外資料先讀取到陣列,處理的結果也放到陣列,最後再寫進去也可能會快些。

excel vba優化問題

5樓:

for i = 7 to counta + 7

if sheets("summarize").cells(i, 25) = "y" then

a=sheets("summarize").cells(i, 1)

b=sheets("summarize").cells(i, 2)

c=sheets("summarize").cells(i, 3)

d=sheets("summarize").cells(i, 6)

e=sheets("summarize").cells(i, 4)

f=sheets("summarize").cells(i, 24)

g=sheets("summarize").cells(i, 7)

sheets("annual test").cells(x, 1) = a

sheets("annual test").cells(x, 2) = b

sheets("annual test").cells(x, 3) = c

sheets("annual test").cells(x, 4) = d

sheets("annual test").cells(x, 5) = e

sheets("annual test").cells(x, 6) = f

sheets("annual test").cells(x, 7) = g

x = x + 1

ncount = ncount + 1

end if

next i

減少工作表來回跑的時間,以上**修改後試試。

6樓:

用陣列的方法,大致是這樣

sub button2_click()

sheets("annual test").range("a3:g2002").clear

dim counta as integer, arr1(1 to 10000000, 1 to 7)

counta = sheets("summarize").cells(6, 29)

dim ncount as integer, i as integer, x as integer, arr

arr = sheets("summarize").cells(7, 1).resize(counta + 7, 30)

for i = 1 to counta

if sheets("summarize").cells(i, 25) = "y" then

x = x + 1

arr1(x, 1) = arr(i, 1)

arr1(x, 2) = arr(i, 2)

arr1(x, 3) = arr(i, 3)

arr1(x, 4) = arr(i, 6)

arr1(x, 5) = arr(i, 4)

arr1(x, 6) = arr(i, 24)

arr1(x, 7) = arr(i, 7)

ncount = ncount + 1

end if

next i

sheets("annual test").cells(3, 1).resize(x, 7) = arr1

end sub

excel vba執行太慢,怎麼提速?

7樓:陽光上的橋

我看出問題了,資料多的時候,隱藏的操作會很慢。加快速度有兩個途徑:

第一個簡單點,for i=11 ti h的迴圈不要檢查cells,而是先把第5列內容存放在陣列裡面,在陣列裡面檢查是否應當隱藏。進行隱藏的演算法也優化了一點,就是先根據是否相等判斷出是否隱藏到變數x裡面,然後檢測那一行的狀態是否與x相同,不同才處理,減少處理次數。優化後的**如下:

上面的**通過從陣列裡面判斷,減少了取數時間,隱藏/顯示行之前先檢測一下狀態,減少處理時間,應該有一定的效果。

**還可以進一步優化,逐行掃描去隱藏和顯示的操作仍然非常耗時,進一步優化的思路就是一塊一塊的進行處理,例如在數萬行中篩選出需要顯示的只有幾行(極端就是一行)而其它都要顯示的時候,最最佳狀態下只需要執行三次:前面一段隱藏、中間一段顯示、後面一段隱藏,能把上萬次的**介面操作縮小到三次,效果會大大加強。但是**會很長、很複雜,要用一系列變數記錄判斷的當前行應該隱藏還是顯示,但不立即處理,繼續判斷下一行;如果需要的處理和前面的相同,就記錄需要處理的範圍,繼續下一行判斷;如果需要的處理和之前的不同,那就執行之前的操作,重新記錄。

excel vba**優化

8樓:抄友靈

**和你的說明有出入

range("a14:a41").entirerow.hidden = false

是你說的意思,先選擇a14:a41行的單元格取消隱藏

for i = 3 to range("a50").end(xlup).row

if cells(i, 1) = "隱" then rows(i).entirerow.hidden = true

next

不對,是從第3行開始到,距離50行最近的一個有資料的行,然後判斷是否應該隱藏。

如果你只想14到50的話,參看下面

for i = 14 to 50

if cells(i, 1) = "隱" then rows(i).entirerow.hidden = true

next

還有為什麼不用自動篩選,只是要把固定的隱藏的話,篩選的不是更方便些

9樓:清風吧吧啦

你的**沒有什麼問題,我測試了一下挺快的,瞬間完成。即使有公式也不影響執行速度,看看是不是你的excel記憶體的問題。或者關閉一下其他程式。

10樓:夜乄晨

只取消a14:a41行的單元格嗎?其他地方還有隱藏的嗎?

excel vba **優化問題請教

11樓:匿名使用者

如果有規律可循,可以用迴圈語句。

如果沒有規律,那也只能一條一條地寫。

如何才能優化好系統,如何才能優化好系統

這個問題問得好.網咖系統快原因有三 1.機子上裝了還原精靈軟體 此軟體裝了後,你機子只要一關機就會丟失一切你裝此軟體之後再裝的自己的東西.我想你應該知道為什麼這麼做吧.即使別把他電腦系統弄壞了也沒關係.關一下機就ok了.2.他的機子是一個公共的,他不用裝什麼軟體.只要能玩就ok是吧 所以記憶體使用也...

Excel VBA中如何使用split來分割內部含有不定空格的字串

1 首先開啟office excel軟體,接著開啟vba編輯介面。2 然後在單元格區域當中輸入一些內容。3 接著在vba編輯器中插入模組。4 在模組當中輸入如下 進行分割取線,然後執行。5 最後在單元格b2中輸入公式 division a1,column a a 然後右拉至d2,公式結果如圖所示。可...

如何提高excel水平,如何快速提升Excel水平

其實最有效的辦法就是要學會偷懶,當在處理excel表或數字時要想著如何減少工作量 偷懶 這樣你就會想法去解決這個問題,這個過程你學到了你想要的,積累多了,你也就是高手了,我就是這樣練出來的,如果主動去學很茫目的不知道學什麼,也不知道excel能做到什麼。所以想偷懶就是最好的動力。如 每天都做重複的工...