Skip to main content

Why excel vba

特殊選擇的背後通常都有愚蠢的原因以及一個想懶惰的人

前言

一直以來常常被詢問的問題,這麼多程式語言為何選擇了EXCEL+VBA?

這個回答可以很中二,因為我覺得很屌!用爛爛的EXCEL玩出很多鬼東西,覺得自己很厲害,好像拿著新手村的木劍一路打到最終魔王的感覺;就像戴了限制器鍛鍊自己一樣,覺得未來如果轉戰其他coding領域還不飛天?鬼扯啊!事實上換個語法除了邏輯可以沿用之外,基本上還要花不少時間去適應,就像星海打習慣的人剛去玩世紀一樣痛苦阿。

真實的答案很現實-【因為沒有別的選擇】,所處的工作環境不容許使用其他的程式語言(這邊緩頰一下,近年來有開放Python,個人在EXCEL完全無解或者需要大量運算能力時還是會使用),也不容許下載坊間很多的免費軟體,在這樣的環境下遇到很多日常重複作業,必須要大量人工作業處理很多沒有價值的工作,我對這種重複性的動作非常感冒,相信各位看官也是,使用過很多種方式去處理:像是快速關機會用.BAT寫、開啟資料夾使用LAUNCHY快速啟動、批次改檔名RenameMaster…等等,但畢竟很多東西坊間是沒那麼剛好有軟體可以去針對【特定問題】處理的,在沒有任何辦法的情況下接觸了鑲在EXCEL內的VBA,開啟了EXCEL VBA的撰寫之路。

這邊不去針對EXCEL VBA做太多的贅述,在網路上資源實在太多了,這邊我想來探討的是,人在什麼樣的情況下才會去學習新事物,而且要怎麼做才能快速的學習新事物?

做中學

切身的經驗在於【解決必須要解決的問題】以及【去學習那些可以解決問題的方法】

很多人會問說,我要學什麼樣的課程或者看怎樣的書才能跟那些高手一樣,信手捻來都是絕妙好招?古人已經解答了,【讀萬卷書不如行萬里路】,看了很多成功的書,不去身體力行怎麼成功?學得再多,無法學以致用,無異於緣木求魚、磨瓦成鏡!所以有些人問我你是看哪本書學EXCEL的,我一概都是回答:用休息的時間去練習,上網看別人怎麼做,
Trial & Error 直到解決問題。

用一張流程模板表示如下:

過程就是不斷的定義問題、找尋現成資源、自行探索、確認結果、重新定義問題直到結果滿意為止。

拿上週隨機亂數便當的小程式來做個例子:

1.問題發生:不知道每天要訂甚麼外食

2.定義問題以及最終樣貌:要解決的是決定外食店家以及讓大家能夠覺得公平且有新鮮感

3.搜尋別人有沒有類似問題:沒有

4.問題是否太模糊:是

5.重新定義問題:需要外食店家口袋清單以及亂數排序週一到週五的菜色(公平以及新鮮感)

6.定義問題以及最終樣貌: 問題轉化為需要口袋名單以及亂數排序五天的功能

7.是否能搜尋到相同的問題:清單可自行建立不須搜尋,亂數排序網路上有人已解決

8.驗證是否可用:可以亂數排序

9.結果符合期待:亂數的結果會重複而且希望能有截圖功能

以下循環過程省略…..

這樣子的流程中會不斷的重新定義問題以及結果確認,過程就是一個很好的反覆學習經驗,如同【超速學習】這本書所提到針對會用到的知識進行學習才最有效率一樣;而至於最後面為何寫恭喜過了第一關,原因是因為通常一個好的東西會不斷的進行維護以及部分功能沿用到其他問題上,像這個亂數功能最後有被拿來做為亂數抽大獎(尾牙表演)的使用。

所以不論是EXCEL VBA還是C++或者Fortran等等等,我相信都是實作中學習才能夠成長並且累積成果,如果有不一樣的看法或可以分享的經驗,也歡迎下方留言討論!

THD

Author THD

More posts by THD

Leave a Reply