導航:首頁 > 數據行情 > vba抓取股票數據太慢

vba抓取股票數據太慢

發布時間:2022-05-28 17:31:18

❶ Excel vba運行太慢,怎麼提速

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

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

OptionExplicit

PrivateSubWorksheet_Change(ByValTargetAsRange)
Dims,h,i,arr,x
IfTarget.Address=Range("P5").AddressThen
s=Range("P5").Value
h=UsedRange.Rows.Count
If(Trim(s)="全部"OrTrim(s)="")Then
Rows("10:"&h).Hidden=False
Else
Application.ScreenUpdating=False
arr=Range(Cells(1,5),Cells(h,5))
Fori=11Toh
x=arr(i,1)<>s
IfRows(i).Hidden<>xThenRows(i).Hidden=x
Next
Application.ScreenUpdating=True
EndIf
EndIf
EndSub

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

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

❷ Excel數據量太大,用VBA運算依然會耗時太久,運行很慢,該怎麼辦

給你個建議,把所有需要讀寫工作表的操作,用數組表達,盡量減少讀寫工作表的語句。
這樣讓更多的操作在內存中進行,而不是在硬碟上進行。這中間的差異是天壤之別。我原來寫的一個提取內容的sub,提取一個填寫一個,總用時2分40秒。
然後我把要提取的東西全都賦值給數組,完事以後一次填寫一行,或者完事後一下填寫完,
結果只用了7秒。

❸ 各位大俠我是菜鳥,剛學VBA。寫的這個代碼處理速度太慢了,各位大俠有更快處理速度的寫法嗎,幫我優化下

沒貼出代碼,如果為你修改,簡單說一下方法:使用數組。
VBA讀寫單元格的時候,無論是RANGE還是CELLS都很慢,讀寫一個單元格非常耗時,解決的辦法是定義一個數組,一次性把整塊(甚至是滿表)讀入到數組中,修改完畢之後,再一次性寫回表裡面去,這樣能成千上萬倍的提高速度。
白天上班忙,下面寫一個對3行、1萬列數據進行簡單運算A3=A1+A2的例子給你看看,希望你能明白。
慢速代碼:
for j=1 to 10000
cells(3,j)=cells(1,j)+cells(2,j)
next j
快速代碼:
arr=activesheet.usedrange
for j=1 to ubound(arr,2)
arr(3,j)=arr(1,j)+arr(2,j)

next j
activesheet.usedrange=arr
如果不相信,可以測試感受一下。

❹ VBA程序運行太慢怎麼解決

首先你的數據量比較大,慢一點也正常,不過設計程序的思路稍微改一下:
1、你採用的是先復制再篩選最後刪除,可以改為在網盤上篩選出自己要的數據,讀取到數組中,然後寫入到表內。
2、判斷符合條件的行整行的刪除,其實在第一步就能合並解決。
這樣運行速度會比你的快一些。

❺ EXCEL如何用VBA自動獲取每個股票近幾天的漲幅

excel大量獲取數據是比較慢的 你這種得用vb寫dll多線程刷新數據才行 私聊

❻ VBA統計速度太慢怎麼辦

excel綜合統計速度確實不是很快,尤其多列多條件,循環太多,根據你說的數據,循環次數大概在一億多,加上反復讀表,導致速度慢,用access可以很好的解決。

❼ VBA代碼運行太慢,求優化代碼提升速度,謝謝!

第一句話
If Sheets("支持度").Cells(4, i) Like Sheets("查詢表過度表").Cells(2, 1) Then

cells(4,i),i 所在的位置表示列,你的循環從1到400,相當於有400列?

您的總循環次數是400 * 400 * 400 = 64000000 次,其中由於if的邏輯,可能有部分循環沒有發生,但就算是1萬次的循環都是很慢的了。VBA本來就是慢的。
如果確實要榨出一點汁來,也不是沒有。
比如 Sheets("查詢表過度表").Cells(2, 1) 這個對象是沒有變數的,所以可以先在一開始定義一個變數,直接獲取單元格的值,以後在大循環中直接使用變數,就會快一點了。
又如,Sheets("查詢表過度表").Cells(x, 2),這個,可以在for x語句下就用一個變數獲取出來,後面的p循環時就用變數。

❽ vba程序從excel表格讀取數據(數據量=2000行),程序運行時特別慢,怎麼解決

給原數據減肥,可能原數據有大量的公式,或者其他對象圖形。

❾ Excel vba運行太慢怎麼提速運行的快些


優化後代碼的文本如下,有可能排版會亂,建議結合上圖閱讀。

Dim arr1, arr2, i, j '定義兩個數組

arr1 = Sheet1.UsedRange.Resize(, 1) '一次性提取表1數據A列

arr2 = sheet2.UsedRange.Resize(, 1) '一次性提取表2數據A列

Sheet1.UsedRange.Resize(, 1).Interior.Color = xlNone '所有已經使用空間的第一列

For i = 1 To UBound(arr1) '對表1A列所有數據進行檢查

If arr1(i, 1) <> "" Then '如果它非空

For j = 1 To UBound(arr2) '查看是否包含表2A列的某一行

If InStr(arr1(i, 1), arr2(j, 1)) Then

Sheet1.Cells(i, 1).Interior.Color = 10000 '這個語句仍然影響速度

Exit For '一旦標記就不再繼續掃描表2

End If

Next j

End If

Next i

❿ excel vba 從一個工作表提取符合條件的數據到另一個工作表太慢,如何提速

將原始數據存入數組再進行比較處理,將滿足條件的數據也先存入數組,最後一次性放進單元格中,這樣就很快了。

閱讀全文

與vba抓取股票數據太慢相關的資料

熱點內容
股票資產分析收益額 瀏覽:927
2017年3月最新上市股票 瀏覽:199
股票開線圖多空指標 瀏覽:987
中材科技這支股票 瀏覽:267
買銀行股票賺分紅靠譜嗎 瀏覽:481
中國石化股票價格為什麼低 瀏覽:265
股票漲為什麼資金流還是流出 瀏覽:36
北京騰飛克科技有限公司股票代碼 瀏覽:9
中國核電股票有多少 瀏覽:896
廣發證券怎麼買賣股票 瀏覽:676
前沿生物這樣的股票會退市嗎 瀏覽:351
st摘牌沒停牌的股票 瀏覽:242
st股票10轉10股是利好嗎 瀏覽:578
同花順股票軟體手機版下載安裝 瀏覽:641
股票賬戶里的市值什麼意思 瀏覽:863
中國移動股票600050今曰行情 瀏覽:742
念佛人可以投資股票嗎 瀏覽:435
中國軟體一年前股票 瀏覽:967
股票同期漲幅公式 瀏覽:917
中國的重要股票指數 瀏覽:474