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%。

資料分割才是效率王道

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


沒有留言:

張貼留言

集保整理 15周內股價高點千張大戶減持或不變 20251205

這裡的做夢資料千萬別當真。 -------------------------------------------------------- 8431 匯鑽科 周三大法人持股對比千張大戶 千張大戶 周三大法人持股 River's Footmar And Note 2024...