2025年10月26日 星期日

VBA:上萬筆 Excel 資料別怕卡卡,這樣做超快^^!

這篇文章主要分享如何用 VBA 分析及篩選海量資料,並透過資料結構優化大幅提升效率。

如何用 VBA 效率處理 5 萬筆資料

最近在跑分析流程時,常常需要用到約 5 萬筆資料來做模擬。這些資料是額外產生的,無法直接從歷史 SQL 查詢,所以每次都要重新計算,資料範圍從 104 年到 114 年,簡稱「A 資料」。

熟悉 VBA 的朋友都知道,Excel VBA 內建像是 AUTOFILTER 等工具,的確能輕鬆篩選數據,但量一旦逼近幾萬筆,效能就明顯下降。舉個例子,如果每次用 Excel 篩選 5 萬筆資料要花 30 秒,分析 10 年的單一條件就得花 10 × 30 = 300 秒,也就是 5 分鐘。假如有多個條件,更是用 N × 300 秒計算,真是讓人耗不起。

或許硬體升級是個解,但預算不是人人都有,小編認為這也是很適合拿來談「怎麼處理海量資料」的題材。實際上 VBA 本身分析功能不弱,只是網路上很多 YT 評論說 VBA 限制多、容易撞記憶體、資料多容易閃退。其實你懂得用好現有資源,小工具還是能發揮大作用,不要輕易放棄已經花錢買的軟體,也要珍惜自己的資金!

分解條件與資料分割

小編的篩選條件主要分成兩大類:

·        概念股股票:共約 200 種組合

·        財報特定指標:約 20 個條件

如果全部都用 A 資料來跑,200 × 20 × 5 萬,真的對不起自己的時間。解決方法就是,先把海量的 A 資料,轉成「只要用的範圍」,簡稱「B 資料」。例如 PCB 概念股大約 20 檔,則 A 資料只挑出這 20 檔股票 10 年的數據,變成 B 資料,資料量就降到 20 × 10 = 200 筆。

再加上 20 個指標條件,總共只要分析 200 × 20 = 4000 筆,效率提升到「秒殺」級。A 資料轉 B 資料前置處理約 30 秒,後續 10 年 × 20 個條件幾乎都在 1 秒內完成:

·        前置處理:30 秒

·        單條件分析:1 秒 × 20 = 20 秒

·        總共:約 50 秒

原本 20 × 300 = 6000 秒,分群後只花 40 秒,效率差異 40 / 6000 

與原始做法相比,假設 20 個條件都用原法,總共要 6,000 秒(20 × 300 秒),經由分群,只需 50 秒,效率提升超過百倍,僅耗時 0.83%。

資料分割才是效率王道

重點就是:資料很重要,但「要處理的」資料更重要!只要分群精準,把不用的資料先篩掉,大大節省運算和等待的時間。這是分析海量資料的致勝絕招,也值得大家在日常工作實際應用。這樣你可以更充分解釋背景流程、讓篩選公式跟單位更清楚,也讓效率提升的呈現更具衝擊力!


沒有留言:

張貼留言

職場毒癌:證照有沒有用,舉手提問

 小編鄭幾天被晚輩提問,考證照有用嗎? 小編整理三個面向 1.口糧 2.貴族 3.加值 這三個面向,作思考發想: 1.口糧:怎說是口糧呢!!!!!直接切入,這寫在履歷上有亮點?ai能否取代?? 最好例子就是駕照,人人會開車,這算技能;太直白會檔到很多人財路,但回到自我發展與規劃,...