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能做到什麼。所以想偷懶就是最好的動力。如 每天都做重複的工...