日期可以計算,這不難理解,某日期 + 1,就是該日期的明天,某日期 - 1,就是該日期的昨天。多加一點,就是數天之後。
除此之外,日期也有某些運算,例如,取一個日期的年、月、日、是星期幾...等。
總之,這些基礎建設,不只 VBA,幾乎任何值得一學的程式語言裡,都有。不必擔心,也不用背誦這些指令,只要知道一定有,到時查說明文件就好了。
2013年3月5日 星期二
計算文字?
文字也能計算? 當然不能像數字那樣四則運算,文字的常用計算,可以是:
上述計算的具體寫法:
- 串起來,像是數字的加法。
- 取想要的部分,例如取身分證字號第一碼。
- 去掉不想要的空白。
- 以某文字取代掉另一文字。
- ...
上述計算的具體寫法:
- 串起來: 輸入 print "180" + "公分",出現 180公分。在 Excel VBA,也可以用 print "180" & "公分"。& 代表 and 的意思。
- 取想要的部分: print left("公分", 1),出現 公。取左邊算來第一碼,左右括弧出現了。不妨把它想成文字的四則運算吧! 但文字可不只四則運算,可能有好多則運算。
- 去掉不想要的空白: print trim(" 前有空白後有空白 "),出現 前有空白後有空白。如果你輸入 print " 前有空白後有空白 ",前面後面都會出現空白,雖然後面的空白不容易看得到(有方法,但此處先不提,因為目前還不重要)。
- 以某文字取代掉另一文字: 輸入 print replace("公分", "分", "尺"),出現 公尺。把 "分" 取代成 "尺"。
- ...
文字的組合運算,可輸入 print replace(left("公分", 1), "公", "私"),出現 私。過程是這樣的:
- 最裡面的 left 先計算,結果是公。
- 然後計算 replace,把公取代成私。
計算數字
電腦可以在螢幕上,印出像是 180 這種數字,而電腦既然號稱計算機,英文名字是 computer,而不是 electronic brain,就代表它是能做計算的。
小學數學總難不倒你吧! 來幾道四則運算:
輸入 print 180+20,出現 200。
輸入 print 180-20,出現 160。
輸入 print 180/20,出現 9。
輸入 print 180*20,出現 3600。乘法用星號,不是 x 字母。
想做先乘除後加減,當然也 OK:
輸入 print 180+20*2,出現 220,不是 400。
如果想讓它出現 400,可以輸入 print (180+20)*2。把 180+20 用左右括弧包起來,這樣就會先計算 180+20=200,之後才乘以 2,答案就是 400 了。
別小看一行程式
完成了第一個程式,只是個一行程式,這,有用嗎?
別小看這一行程式,它夠簡單,也能讓螢幕上有東西出來,雖然還不到讓螢幕有東西動來動去很酷炫,但至少有東西出來。比起其它語言,要在螢幕上印出這麼一行東西,這已經簡單許多,到目前為止,我們只花了很少力氣,不是嗎? 我可沒讓你先看一大堆安裝步驟(Excel 完整安裝的話,應該是光碟放進去、按幾個下一步就搞定了)、應用程式框架、MVC 架構、物件導向、網頁程式設計...等等可能把你嚇跑、或讓你睡著的東西。
那些東西當然也很有用,但身為程式初學者的你,一時之間可以先跳過。當然如果你要設計網頁程式,Excel VBA 不是個好選擇,而我這裡也不會寫。我主要寫如何利用程式處理大量資料,讓你提升工作效率。
而 Excel VBA 這個 "即時運算" 視窗,是學習程式設計的好幫手,它可以讓我們先專注於一件事: 指令可以讓螢幕上有些什麼效果,立即、馬上。
印完數字,還記得另外兩個資料類型嗎? 文字、日期。也來印一下,在 "即時運算" 視窗內,輸入:
print "公分"
結果印出公分。請注意,印出的結果,前後並沒有雙引號。加上雙引號的動作,是在印出之前、是我們要指示電腦做的事,而印出的結果,是給人類看的,不需要雙引號。畢竟你跟人類對話時,是不會說: 我身高 180 雙引號 公分 雙引號 吧?
同理,印出日期:
print #1980/12/31#
結果會是 1980/12/31,前後沒有井字號。
別小看這一行程式,它夠簡單,也能讓螢幕上有東西出來,雖然還不到讓螢幕有東西動來動去很酷炫,但至少有東西出來。比起其它語言,要在螢幕上印出這麼一行東西,這已經簡單許多,到目前為止,我們只花了很少力氣,不是嗎? 我可沒讓你先看一大堆安裝步驟(Excel 完整安裝的話,應該是光碟放進去、按幾個下一步就搞定了)、應用程式框架、MVC 架構、物件導向、網頁程式設計...等等可能把你嚇跑、或讓你睡著的東西。
那些東西當然也很有用,但身為程式初學者的你,一時之間可以先跳過。當然如果你要設計網頁程式,Excel VBA 不是個好選擇,而我這裡也不會寫。我主要寫如何利用程式處理大量資料,讓你提升工作效率。
而 Excel VBA 這個 "即時運算" 視窗,是學習程式設計的好幫手,它可以讓我們先專注於一件事: 指令可以讓螢幕上有些什麼效果,立即、馬上。
印完數字,還記得另外兩個資料類型嗎? 文字、日期。也來印一下,在 "即時運算" 視窗內,輸入:
print "公分"
結果印出公分。請注意,印出的結果,前後並沒有雙引號。加上雙引號的動作,是在印出之前、是我們要指示電腦做的事,而印出的結果,是給人類看的,不需要雙引號。畢竟你跟人類對話時,是不會說: 我身高 180 雙引號 公分 雙引號 吧?
同理,印出日期:
print #1980/12/31#
結果會是 1980/12/31,前後沒有井字號。
學習 Excel VBA 的第一步
有了基本觀念,也完整安裝好了 Excel,就可以開始寫程式了。
程式長得什麼樣子呢? 程式會有一個名字,內含一堆指令。要學會寫一堆指令之前,先試著寫一行指令,然後再學著把一行一行的指令,組織成一堆指令,然後給個名字,就完成一個程式了。
在 Excel 的環境下寫程式,有時也稱之為寫巨集(macro),先不要管這個 macro,總之就是在寫程式。
我衷心建議你,學習 Excel VBA,不要從錄製巨集開始,在你懂得什麼是程式設計之前,錄製出來的程式碼,我保證你看不懂,很容易破壞學習興趣。
錄製巨集,可以在你稍微懂了一點 Excel VBA 之後,輔助你學習 Excel VBA 的指令,降低學習負擔。更重要的是,多數有用的程式,都是錄製不出來的。如果有用的程式,都可以用錄得錄出來,那目前環境下的程式設計師,恐怕價值都會大為降低。
進入 Excel,按下 Alt+F11,如果沒出現類似以下畫面,表示 Excel 安裝不完全,請重新安裝。
然後按下 Ctrl+G,畫面變成類似這樣,出現一個 "即時運算" 視窗,這個視窗,就是讓你學習一行指令用的:
運用之前提到的基本觀念,我們來讓螢幕上出現一些東西,請在 "即時運算" 視窗內,輸入 print 180:
結果底下出現了 180,恭喜你,完成第一個程式了。到目前為止,並沒有用到超過國小英文數學程度的知識,如果你覺得這很難,應該是你根本沒興趣,必須認真考慮,到底要不要學下去。如果程式設計不能帶給你好處(心靈上或工作上的好處),不如不學,並不是每個人都要學程式設計。
程式長得什麼樣子呢? 程式會有一個名字,內含一堆指令。要學會寫一堆指令之前,先試著寫一行指令,然後再學著把一行一行的指令,組織成一堆指令,然後給個名字,就完成一個程式了。
在 Excel 的環境下寫程式,有時也稱之為寫巨集(macro),先不要管這個 macro,總之就是在寫程式。
我衷心建議你,學習 Excel VBA,不要從錄製巨集開始,在你懂得什麼是程式設計之前,錄製出來的程式碼,我保證你看不懂,很容易破壞學習興趣。
錄製巨集,可以在你稍微懂了一點 Excel VBA 之後,輔助你學習 Excel VBA 的指令,降低學習負擔。更重要的是,多數有用的程式,都是錄製不出來的。如果有用的程式,都可以用錄得錄出來,那目前環境下的程式設計師,恐怕價值都會大為降低。
進入 Excel,按下 Alt+F11,如果沒出現類似以下畫面,表示 Excel 安裝不完全,請重新安裝。
然後按下 Ctrl+G,畫面變成類似這樣,出現一個 "即時運算" 視窗,這個視窗,就是讓你學習一行指令用的:
運用之前提到的基本觀念,我們來讓螢幕上出現一些東西,請在 "即時運算" 視窗內,輸入 print 180:
結果底下出現了 180,恭喜你,完成第一個程式了。到目前為止,並沒有用到超過國小英文數學程度的知識,如果你覺得這很難,應該是你根本沒興趣,必須認真考慮,到底要不要學下去。如果程式設計不能帶給你好處(心靈上或工作上的好處),不如不學,並不是每個人都要學程式設計。
學習程式語言的第一步
不是指令,而是基本觀念。跟電腦對話,與跟人類對話不同,例如我對你說: 我身高 180 公分,1980/12/31 出生,身為至少受過國小教育的人類,你應該能知道,180 是數字、公分是文字、生日是日期。
但電腦不知道,所以我們要先指定,告訴電腦,我們所指示的資料類型是什麼?
電腦上的資料類型,粗分就上述三種: 數字、文字、日期。指示數字時,可以直接寫 180;指示文字時,要前後加上雙引號(有些語言是單引號,有些單雙皆可),寫 "公分";指示日期時,前後加上井字號,寫 #1980/12/31#,有些語言可能不一樣,但大致上格式就是如此。只要知道,指示不同資料類型時,必須要加上某些符號就好。
不要去背指令,剛開始學程式設計,重點是持續,能夠簡單理解,就先不要去找困難的理解方式,不要輕易破壞學習胃口。
但電腦不知道,所以我們要先指定,告訴電腦,我們所指示的資料類型是什麼?
電腦上的資料類型,粗分就上述三種: 數字、文字、日期。指示數字時,可以直接寫 180;指示文字時,要前後加上雙引號(有些語言是單引號,有些單雙皆可),寫 "公分";指示日期時,前後加上井字號,寫 #1980/12/31#,有些語言可能不一樣,但大致上格式就是如此。只要知道,指示不同資料類型時,必須要加上某些符號就好。
不要去背指令,剛開始學程式設計,重點是持續,能夠簡單理解,就先不要去找困難的理解方式,不要輕易破壞學習胃口。
程式設計,如何持續學下去?
學習這件事,不能持續的話,就變成一種損失,表示你初期投入的時間成本、買書成本,通通都浪費掉了。當然啦,如果之後對你另一段學習有所啟發,也許不算浪費。
而且可能讓你對程式設計,自此心生畏途,甚至厭惡。所以,持續性總是重要的關鍵。
想想減重、念書、或其它任何需要努力與專注的計畫,如何能讓自己持續一陣,不打瞌睡、不放棄?
簡單,是一種策略。遇到困難,可能放棄,如果一直覺得簡單,比較可能持續。有趣當然是另一種持續策略,也可能是簡單之後產生的副產品。
然而,簡單有趣,都很主觀,所以我儘量試著讓之後的旅程保持簡單,希望如果簡單之後,你會覺得有趣。覺得有趣,你自己就會持續下去。
而且可能讓你對程式設計,自此心生畏途,甚至厭惡。所以,持續性總是重要的關鍵。
想想減重、念書、或其它任何需要努力與專注的計畫,如何能讓自己持續一陣,不打瞌睡、不放棄?
簡單,是一種策略。遇到困難,可能放棄,如果一直覺得簡單,比較可能持續。有趣當然是另一種持續策略,也可能是簡單之後產生的副產品。
然而,簡單有趣,都很主觀,所以我儘量試著讓之後的旅程保持簡單,希望如果簡單之後,你會覺得有趣。覺得有趣,你自己就會持續下去。
學程式設計,數學要很好嗎?
不必,當然這也看你想把程式設計學到什麼地步、以及你想寫出什麼樣的程式而定。但一般而言,不必。
反而是說故事的能力、自圓其說的能力,比較重要。程式設計,是一種設計,又是在電腦螢幕上的設計。既然是設計,就是把你自己的想法,用可用的指令,表達出來,好比寫文章、烹飪(設計菜色)、設計海報、設計(規劃)活動、設計書架、設計房間、甚至設計(制定)一個政策。都是一種設計。
當然,數學好到一個地步,對程式設計的學習過程、以及學會之後把程式寫得優雅、跑起來快不快,自然有一定的幫助。但除非你想成為很專業的、且特定領域的程式設計師,不然,多數人的數學程度都差不多,所以不必擔心這點。
程式不必寫得多好,就可以讓你覺得有趣、節省你的時間(提升工作效率)、拯救你的手腕、降低你的眼力負擔、鬆弛你的肩頸。當然,如果意外的讓你對程式設計起了興趣,從初學者變成專業程式設計師,開始為別人寫程式,那上述好處可能變成別種東西。
反而是說故事的能力、自圓其說的能力,比較重要。程式設計,是一種設計,又是在電腦螢幕上的設計。既然是設計,就是把你自己的想法,用可用的指令,表達出來,好比寫文章、烹飪(設計菜色)、設計海報、設計(規劃)活動、設計書架、設計房間、甚至設計(制定)一個政策。都是一種設計。
當然,數學好到一個地步,對程式設計的學習過程、以及學會之後把程式寫得優雅、跑起來快不快,自然有一定的幫助。但除非你想成為很專業的、且特定領域的程式設計師,不然,多數人的數學程度都差不多,所以不必擔心這點。
程式不必寫得多好,就可以讓你覺得有趣、節省你的時間(提升工作效率)、拯救你的手腕、降低你的眼力負擔、鬆弛你的肩頸。當然,如果意外的讓你對程式設計起了興趣,從初學者變成專業程式設計師,開始為別人寫程式,那上述好處可能變成別種東西。
程式設計是什麼?
是讓電腦依照你的指示,讓螢幕有東西動來動去。
這些指示,多數是用英文寫。很簡單的英文,大約國小英文程度。常用指令不會超過 100 個、甚至更少,指揮電腦做些簡單的事,不會比指揮狗更難,據說狗可以聽懂人類 200 個指令。
當然也有其它種類的程式設計,可以讓電腦依照你的指示,不只螢幕有東西動來動去,也可以讓螢幕以外的東西動來動去,例如機器人的手臂、戰鬥機飛起來...等等。
我這裡講的,主要是 "讓螢幕有東西動來動去" 這種,而且是在一般的個人電腦上的螢幕上動來動去,用 Windows 的。
訂閱:
意見 (Atom)


