是本不一样的Excel巨集书

上传人:艾力 文档编号:36529025 上传时间:2018-03-30 格式:PDF 页数:14 大小:554.07KB
返回 下载 相关 举报
是本不一样的Excel巨集书_第1页
第1页 / 共14页
是本不一样的Excel巨集书_第2页
第2页 / 共14页
是本不一样的Excel巨集书_第3页
第3页 / 共14页
是本不一样的Excel巨集书_第4页
第4页 / 共14页
是本不一样的Excel巨集书_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《是本不一样的Excel巨集书》由会员分享,可在线阅读,更多相关《是本不一样的Excel巨集书(14页珍藏版)》请在金锄头文库上搜索。

1、 1 是本不一樣的Excel巨集書,我假設你已經具備巨集程式設計的基礎。其實,一路往下看,你會知道,要讀懂本書,需要的巨集基礎也不必太深。如果你完全不會巨集,市面上、網路上,都有非常多的參考資料與書籍;如果你剛學會基本的巨集程式設計,我相信本書所介紹的整套思維及其衍生出的技巧,會讓你以後的日子輕鬆愉快;如果你已經誤入歧途(說笑的啦!),是個已經有多年老練經驗的超級使用者(power user),把Excel拿來當資料庫用,而且已經用它設計了許許多多好用的系統,相信你更可以從本書獲得新的啟發。 這 2 語法與語意Excel巨集魔法書 在許多領域,人們都試圖以最少的工,做最多的事。我們總希望事半功

2、倍,不想要做重複的事。所以,企業的經營上,經理人想找出80-20法則;科學的探索上,科學家想發現各種一勞永逸、完美無瑕的公式;眾人的管理上,政治家希望建立制度;國際紛爭,各國要建立機制或慣例;股市裡,分析師想找出各種技術線型;景氣預測,經濟學家則建立各種指標;軟體的開發就更不用說了,儘管改變已經躍居軟體開發的頭號敵人,改變是唯一的不變已成為軟體開發的無上真理,但軟體工程專家仍孜孜不倦的希望在這個善變的人類活動中,勾勒出一些可以倚賴的基本元素。你所熟知的作業系統(OS)、資料庫管理系統(DBMS),以及可能不怎麼熟悉的物件導向 (OO) 、SQL、XML、CMM、RUP/XP/Agile.等,正

3、是我們開發各種資訊應用系統,在專案管理或程式技術上,所倚賴的大型架構。 小技巧發揮小功能,大架構則發揮大功能。你在這之前所學的那些Excel巨集指令,與其說是一行行的指令,倒不如把它視為一種語言,或是一種語意模型更為貼切。但這語意不是你的,是Excel它自己的。 你大概覺得納悶,指令跟語言或語意差在哪裡?不就都是一行行的程式碼嗎? 你可以這麼想,指令如同孤伶伶的單字,語意則像是一篇文章,有你的思想在裡面。指令只有正確與否,語意卻有豐富的生命,指令大家都可以用,語意則可以表現出差異性,指令是軟體廠商對該軟體的定位,他提供了一個最基本第1部份 概念架構 3 的文法平台,他只做到那裡,剩下的事,要靠

4、你對自己資訊需求的想法,以你自己的語意,用他所提供的指令實作出來。同一個程式的需求,每個人用的都是一樣的Excel語法,但語意(程式邏輯)卻絕難完全相同。甚至一個月前的你跟現在的你,對同一個程式的想法都會有所不同。 Excel只能檢查你的巨集語法,檢查不了你的巨集語意。如果寫程式永遠停留在語法的層次,那程式碼就成了一本本指令堆砌出來的流水帳,不但難以維護、難以理解、也難以適應改變,提升到語意的抽象層次,程式設計這件事才有樂趣跟藝術可言。 這些東西好像不是寫給你看的,你可能聽過一些程式設計師說過什麼物件導向,報上登的程式設計課程也有一種叫xxx物件導向程式設計等等名詞,我學的是Excel,最多被

5、人稱作是power user(超級使用者),懂這些做什麼? 你當然不需要也可以不必懂物件導向(雖然你懂了之後可能會上癮),就可以寫出能運作的Excel程式,我在這本書談的也不是物件導向(它只是行文至此的一個例子)。但程式設計這種唯心的純腦力活動,能了解一下更深入的程式技巧,不也是一件好玩且饒富意義的事嗎?事實上,Excel可以接受的巨集寫法,遠超出絕大多數使用者的想像,買了一部保時捷不開,卻把它當作是野狼在騎,不是也挺可惜? 4 一個語法,各自表述(成為不同的語意) 自然語言儘管有所謂的文法在規範著它,但仍具極大的自由度,所以作家或詩人可以用有限且枯燥的單字,構築出無限而流傳千古的文章和詩集,

6、語言是我們跟其它動物最根本的不同。而這裡所說的語言,當然不是猴群的示警聲、鯨魚的求偶聲、或迅猛龍(?)召喚同伴的訊號(儘管電影聲稱牠們已經蠻聰明)這等單純,它所指的,當然是語意。 程式語言的文法就是語法,這很簡單,不難學會,除了on-line help,Excel甚至可以把你的一舉一動都錄製下來(少數特殊的動作仍無法以巨集錄製,例如外部資料查詢、設定儲存格的註解字型、傳送郵件等),但即使這樣,也仍舊製造不出聰明的巨集程式碼,原因還是那一個:電腦無法了解你的語意。這一能力,有時動物都比電腦強,我的寵物有時似乎真聽得懂我在跟牠講什麼呢!縱然Excel能把你的一舉一動全都錄,但無法知道你真正想做的事

7、情是什麼,所以它錄製不出一個兩層迴圈的九九乘法表程式。 由於語言的這種自由度,所以一種語法可以產生出千千萬萬種不同的文章,同一個單字可以孕育出好幾種不同的意義,字有限,而人類意欲表達的意義無窮,所以單字的多載(overload)-一個單字負載多重意義,遂成了一個必然現象。 程式語言也是如此,每個程式語言的關鍵字-所謂的保留字 或 指令 ,像是if then、for loop、procedure.這種東西,數量上都少得驚人,學會任何一個程式語言的這些保留字,絕不會像是我高中時英文老師要我背英文字典那樣沒完沒了,而即使是號稱最新式的所謂物件導向語言,保第1部份 概念架構 5 留字的增長幅度也絕不可

8、能像自然語言那樣,每年都會生出一大堆的新字。 既然程式語言的保留字這麼少,又幾乎都是國中程度的英文單字,那程式語言到底難在哪裡?或者說,讓很多人覺得它無趣在哪裡?我為何這麼問?因為如果不難又有趣,加上待遇也不算太差,為什麼我們的程式設計師密度不能像美國、日本、或以色列那樣?程式設計師雖然不是當今職場上的顯赫行業,但到底還算得上熱門行業之列,雖然菜鳥的待遇有時還抵不過賣香雞排的收入,但也總算得上知識經濟一族,況且大家可別忘了,(曾經是、直到去年也都還是)舉世最有錢的人比爾蓋茲,就是個寫程式起家的。 原因,就在於程式設計並非把語法或指令背熟就好,那大概花三炷香的時間就夠了,原因,在於程式設計的精髓

9、乃是有內涵的語意,而非硬梆梆的語法。 扯了這許多,注音輸入法的慢速打字累得我腰直不起來,眼睛也疲勞酸痛,你是否也覺得頭昏腦脹,累了?(來罐蠻牛吧) 語意即哲學即架構 覺得我好像在講哲學? 也許你想得沒錯。而且,很多學問講到最後,往往都會自動升級成哲學。連張三豐教張無忌太極拳,都要他只重其意,不重其招,不要死背招式(甚至還要忘掉它們),而要把太極心法了然於胸。 6 我曾經上過一種叫物件導向 (這名詞你前前後後聽我講了好多遍了)的電腦課程,那個課程時數50小時,要價NT$ 25,000,都還有不少人自費參加,某些人(不包含我)上完之後的感覺大概跟你現在有點像:他們覺得好像上了一堂哲學課。那門課程全

10、程是沒有任何電腦的。這讓我想起了美國投資大師巴菲特的營運總部,是在一個沒有電腦的鄉間,他刻意不讓底下的分析師過份倚賴電腦所提供的資訊,以免影響他們的對某些事物的基本判斷。 第五項修練的作者,管理學大師,彼得聖吉,他開的一些管理課程,也在鄉間舉行,讓經理人放鬆心情,有些經理人因為沒有聽到實務的管理技巧而氣憤的認為,聖吉教的不是管理,而是哲學。 再舉一個例子,形象頗受爭議的國際金融基金經理人兼慈善家索羅斯,在他的全球資本主義危機一書中曾經提及,他的生財之道及人生觀是建立在一些抽象的哲學概念之上的。 為何我要提及哲學?因為它跟程式設計的關係非常密切,甚至可以這麼說,程式設計的本質並非數學,而是哲學(

11、或者也可以這麼說,它是好多領域的綜合體,包括了工程、藝術、管理、數學、心理學、法律、甚至政治),套用一位我所欽佩的軟體工程師的話:我們是在扮演虛擬世界的上帝角色。 常聽到有人說,寫程式要數學好,但寫了這麼多年的程式,我發現其實用到數學的時候並不多,在那些個不多裡,用到的也不難。但當然,這得看你對數學好的定義是什麼。我的經驗是,程式設計,尤其是商用的一般資料處理程式設計,大概只要高中數學程度就夠了。具體來說,就第1部份 概念架構 7 是代數的概念,或者你也可以說,它是一種將數字抽象化的能力。我記得有次教一群小學生寫程式(應補習班要求),我要他們計算長方形的面積,並在實際測試程式時,輸入任意兩個數

12、字代表長方形的長與寬,那是BASIC吧!輸入指令是INPUT,照理說,程式是應該寫成: INPUT X, Y 而一位小四的男生,好不容易,終於想出了程式的目的,但寫出來的卻是: INPUT 2, 3 這時,一位小六的男生告訴他說,要寫成INPUT X, Y,小四生不解,那位長他兩年的小朋友說出了一句讓我恍然大悟且至今仍記得的話:喔!那個X跟Y是代詞啦! 我這才告訴補習班,代數要國中才會教呢!缺乏將數字抽象化的最基本能力,連帶也會缺乏將真實世界問題抽象化的能力,而這種能力正是進入程式設計世界的第一步。 先把你心中對哲學的刻板印象拋開 (忘了人生哲學這等字眼),把它視作是一種自圓其說的能力。程式設

13、計並不是要你去證明什麼,而是要你去創造什麼。所以數學不夠好也沒關係,大多數的時候,程式設計只需要國中程度的英文,數學呢?除非你要寫的是反飛彈防禦系統或F16戰鬥機上的程式,不然,前面已經提及,一般的商用資料處理,最多高中程度的數學應該就可以搞定了。即使像是保險系統中的精算功能,也有精算師(所謂的領域專家)會幫你搞定公式,你只需(在別人的幫助下)理解那些數學公式,將它翻譯成數學公式的近親-程式語言就行了。 8 答案已經很清楚,前面說了半天的語意,就是這裡說的哲學。你對一個程式的想法,就是你日後向別人也向自己解釋該程式的語意模型(程式的世界,一個月後的自己可能會完全不認識一個月前的自己,所以相信我

14、,日前的你會有機會向日後的你解釋的) 。注意想法的 法 字,它在這裡的同義詞,等同於制度、機制、模型、模式、原則,以及我接下來要談的架構。 程式的架構 程式如果沒有架構,當然還是可以執行無誤,一個九九乘法表,不用兩層迴圈,用print指令列印81次,除了多佔一些硬碟空間跟CPU時間 (反正因此而多花的空間跟時間大概比新鮮空氣還便宜),結果並不會錯誤,如果還可以因此交出作業,雖不會得到A,但大概也不至於被當,所以又有何不可? 當然可以,如果這樣,我不必再說下去,你也不必再看下去,我們彼此謝謝,也不必再聯絡了。 但事情沒這麼單純,之後如果老師要你交一份能產生八八乘法表或七七乘法表,或看準了你用pr

15、int指令而要你交一份100*100乘法表的程式,或甚至更狠,說任意輸入兩個數m跟n,就印出m*n乘法表,那你的程式可就寫不完了。由於缺乏一個最根本的架構(或心法),你的print招式禁不起一點點外在條件的變動。 如果說這麼簡單而無聊、純屬學生交作業層次、對企業界毫無實際效益可言的程式,都存在著有架構沒架構就有差的狀況,那稍微複雜一點的程式不就差更多了? 第1部份 概念架構 9 這一切之所以會如此,乃是因為軟體的天敵是 改變 ,程式碼不像大同電鍋或電扇,可以一用30年,它要一直變動、一直創新才有用,DOS並沒有壞掉,它是可以用的,但大部分時候,它只能供作七年級生憑弔和五年級生懷念之用(不過我這

16、麼說也不盡正確,我常看到要求成本與穩定的百貨業POS系統,仍在快樂的使用DOS和倚天中文)。 軟體做為一種形式化、結構化的語言,注定無法精確的描述瞬息萬變的真實世界,但如果因此放棄精確描述的(部分)可能,顯然也會把程式設計這回事帶進完全渾沌的隨機選擇之中,既如此,則程式也不成為程式,更別說重複使用(reuse)的可能,因為每個程式都會是獨一無二的藝術品。 所以,你的程式還是要有架構。不論是何種架構,只要你覺得前後一致、易於理解、易於維護、易於擴充,不管是Java還是.NET、也不管是Excel還是Word,都是好架構。有架構勝過沒架構,架構可以說是你在程式語言與真實世界之間建立的一座思想橋樑,這座橋樑也會一直跟隨著你,日後學習不同程式語言時,它會是一個基礎,亦即,你總是可以從這個架構切入新的程式語言。你不會光是從單純的if then else、for loop等語法層次切入新

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号