• 2

請問 Excel VBA 的 範圍複製問題效能改寫建議

謝謝 snare 大大


請問VBA內的陣列某個位置 可以是函數嗎?
例如A(1)=A(2)*2
如果可以比較複雜的巢狀函數要怎麼寫
例如=AND(AE3<=-$AK$1,L3<=$CL$1,AD3<=0,OR($Y$1=0,Y3<0),AA3<=0,AB3<=0,T3<=0)

看來要改二維陣列
對我來說短時間很難
根本不懂陣列阿~


有沒有甚麼VBA指令
會等函數都運算更新完了
再執行下一行程式的呢?

我的CPU 跑報表時 如Q9400只用了30~40%
有甚麼指令或方法可以讓程式跑更快嗎?
CPU 給他80%以上都沒關係


Excel多是用記憶體在運算?
我的記憶體只有1333的速度
如果買新電腦記憶體頻率高一點DDR4? CPU 文書型的
也能運算變快嗎?
dazzcarr wrote:
請問VBA內的陣列某個位置 可以是函數嗎?


看來要改二維陣列
對我來說短時間很難
根本不懂陣列阿~


有沒有甚麼VBA指令
會等函數都運算更新完了
再執行下一行程式的呢?

我的CPU 跑報表時 如Q9400只用了30~40%
有甚麼指令或方法可以讓程式跑更快嗎?
CPU 給他80%以上都沒關係


Excel多是用記憶體在運算?
我的記憶體只有1333的速度
如果買新電腦記憶體頻率高一點DDR4? CPU 文書型的
也能運算變快嗎?

...(恕刪)


一、不行,陣列只是拿來存資料的
但是可以把計算式(字串) or 函數(字串)放入陣列,再用程式放回工作表恢復成標準函數執行

二、慢慢學

三、有,但您工作表效率差的原因不在這裡,真的寫出來,只會等更久~久~久

四、
a、如果可以請裝64位元的excel,沒有32位也可以至少2007 or 以上
檢查選項內=>進階=>公式=>啟用多執行緒計算,是否打勾
b、先開excel,再打開工作管理員=>處理程序,找到excel=>設定優先順序=>把標準改成高或即時
(改成即時有可能會造成電腦被excel卡死,無法執行其它工作,甚至死當)

五、理論上快的電腦對計算有幫助沒錯
但是在不改變公式、程式的清況下,就算換一台10萬元的電腦,也沒什麼幫助


請參考以下2篇微軟官方文章
對於如何最佳化公式、使用陣列、加速vba...等改善效能,有非常詳細的說明、範列

https://msdn.microsoft.com/zh-tw/library/office/ff726673(v=office.14).aspx
https://msdn.microsoft.com/zh-tw/library/office/ff700515(v=office.14).aspx

****以下是微軟說的****,實際上也是這樣沒錯,前提是工作表、vba要設計好
您可利用 Excel 2010 有效率地管理大上許多的工作表,也在計算速度方面大幅提升效能。當我們建立大型工作表時,很容易不小心就把它們設計成計算緩慢的結構。龜速的工作表會提高出錯的風險,因為使用者難以在計算期間保持專注。
藉由使用一系列簡單明瞭的技巧,便可以讓原本龜速的工作表加快 10 到 100 倍。下次您在設計和建立工作表時,別忘了運用這些技巧,有效提升計算速度喔。
哇~

非常實用

謝謝提點

大感恩

感謝各位大大
謝謝各位大大

目前改寫函數中

效能增進約20%

但改寫遇到一些問題

還希望能幫忙提點

謝謝

發問在新文章如下
http://www.mobile01.com/topicdetail.php?f=511&t=4877563
  • 2
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?