2014年9月21日

Office Word 2007/2010/2013 應用技巧:用功能變數 IF、Compare、=(Formula) 自動計算學年度、學期

伊文想找一些生活的話題,來談文件自動化的運用;想像學校老師或行政人員,要面對學年度計算,學年度和民國年份是不一樣的,還要考量上下第一、第二學期。現在我們要在一份文件加上「功能變數」,自動去計算,第幾學年度,第幾學期,才能提升我們的偷懶效率。
結果範例:功能變數示範:自動計算學年度、學期

注意:
1.如果您只是想找工具來節省時間,要大概了解修改方法,令符合您的需求。

2.不要用瀏覽器檢視,請下載後用Word 開啟。


如果你對功能變數完全不熟,可以參考:Office Word 2007/2010/2013 應用技巧:「功能變數」使用入門 插入(頁碼)/(總頁碼),大概上手再來這裡。在範例教學文裡,你會接觸到「功能變數」IF、Compare 、=(Formula) 十分進階用法,需要到一些邏輯觀念。如果你接觸任一門高階程式語言,這些觀念對你而言只是小case;如果碰過也沒關係,伊文會在這篇教學裡詳細的解說。


根據台北市政府教育局提供的資料:按此下載,參考奇摩知識+:2011年國中是第幾學年度? 得到民國103 年,的學年度計算方式如下:







*1/21 當天屬於102學年度 第二學期,9/1 當天屬於103學年度 第一學期

*伊文是在民國103年9月撰寫這篇文章,以當時的時間點為範例,如果你在未來看到這篇文章,需要自行舉一反三,我的結果範例還是會計算正確,如果教育局更改學期、學年度的時間點,就要會修改功能變數。

這篇文章分為三個部分:
1.「If」的用法。
2.「Compare」的用法。
3.範例「學年度計算」。



1.功能變數 IF 的用法:

Word 會提示你IF 的使用方法,請注意語法之間的空格

{ IF 表示式1 運算元 表示式2 結果為真的文字 結果為假的文字 }

表示式1、表示式2 :您要比較的值。這些表示式可以是合併功能變數資料書籤名稱字元字串數字傳回值巢狀功能變數(就是功能變數包功能變數,好像包水餃,等會我們就會用到)數學公式(就是=(Formula) 的功能,等會我們用到會詳細講解)

如果表示式包含空格,請用引號  " " 括住表示式(如果你對寫程式有點興趣,伊文建議養成好習慣,通通括起來 )。引用:功能變數代碼:IF 功能變數 ,微軟給你一些簡單的範例: IF 功能變數範例


運算元表,建議稍稍記憶一下:
運算元 描述
= 等於
<> 不等於
> 大於
< 小於
>= 大於或等於
<= 小於或等於

舉些子例:
9 > 5 結果為真
10 < 18     結果為真
1.1 > 2.5 結果為假
7 <> 7 結果為假
"伊文" = "周杰倫" 結果為假



2.功能變數 Compare 的用法:



{ COMPARE 表示式1 運算元 表示式2 }

Compare 功能變數代碼會比較兩個值,如果比較結果為真,則顯示結果 "1",如果比較結果為假,則顯示 "0" (零)。引用資料:功能變數代碼:Compare 功能變數

小觀念,看到 「 表示式1 運算元 表示式2」 這個部分是個邏輯判斷, 會產生結果,就是「真」(true, 簡寫T)或「假」(False, 簡寫T);也有傳回值,1代表「真」,0代表「假」。


3.範例「學年度計算」開始了!!



對照上面時間圖和下面的邏輯圖,利用功能變數取得系統日期;經由第一個程序判斷,如果月份大於等於9月,就顯示:「103學年度 第一學期」。如果不是,第二個程序判斷,月等於1和日小於21必須同時成立,則顯示:「102學年度 第一學期」,否則顯示:「102學年度 第二學期」。


*碰到一個「功能變數」包另一個「功能變數」的狀況,不能直接撰寫 ,要用取代或貼上。





第一步,「插入」->「快速組件」->「功能變數」,在「類別 (下拉式選單)」找「文件自動化」,在「功能變數名稱」點選「If」
在「功能變數代碼」輸入以下文字~


按下Alt+F9以顯示語法:{ IF 月份 >= 9 "X學年度 第一學期" "N" }(語法1)

*注意:「月份」、「X」、「"N"」,只是暫時插入的代號,用什麼代號不重要,接下來要把它們置換成其他的「功能變數」。



第二步,現在需要日期月份的部分,只要數字,因為要用來比大小。

參考下圖,滑鼠選取(語法1)「月份」,插入一的「Date」功能變數,修改「日期格式」為「M」。

*小技巧:如果你不知道「日期格式」代碼,可以參考「日期格式」下面的那些範例,再刪除不必要的部分。

按下Alt+F9顯示語法:

{ IF { DATE  \@ "M" } >= 9 "X學年度 第一學期" "N" }(語法2)

紅色highlight的部分,就是剛剛插入的語法。



第三步,跟上面操作類似,把(語法2)的「X」選取,再插入一個 「Date 功能變數」,改日期格式:e,取得民國年份,X就被置換掉,如下(語法3)。


{ IF { DATE  \@ "M" } >= 9 "{ DATE  \@ "e" }學年度" 第一學期" "N" }(語法3)
土黃色的部分,就是剛剛插入取得年份的語法。

先把(語法3)放在那別管,換行找個文件空白處,我們還要寫別的功能變數貼入(語法3)來包水餃。





第四步,現在要寫第二個判斷程序。模仿第一步插入以下功能變數語法,有上述練習如法炮製,不放圖囉!

{ IF "比較" = 1 "X學年度 第一學期" "X學年度 第二學期" }(語法4)

接下來我們要陸陸續續把「"比較"」、「X」分別置換成功能變數。
(語法4)的水餃皮做好,先放在那,換行找個文件空白處。



第五步,找文件的空白處,如下圖,插入Compare的功能變數。

{ COMPARE Y1 < 21 }(語法5)



第六步,如下圖,插入「日期功能變數」置換「Y1」
{ COMPARE { DATE  \@ "d" } < 21 }(語法6)
(語法6)是水餃的餡料,先把放在那,換行找個文件空白處。



第七步,接下來再插入以下「功能變數」,操作方式和上面很類似,伊文就不再用圖片導引。
{ COMPARE { DATE  \@ "M" } = 1 }(語法7)
(語法7)也是水餃餡料,先把放在那,換行找個文件空白處。



第八步,談談「= (Formula)」的功能,可以做數學計算,插入函數可以做平均、總和、最大值、最小值,還可以做到邏輯運算,這次就要用它的「AND」函數,來做到邏輯判斷。可以功能變數代碼:= (Formula) 功能變數

月等於1和日小於21必須同時成立,先插入一個「且」的邏輯判斷,AND(x,y):邏輯運算式 x 和 y 均正確,傳回數值 1;如果任何一個運算式錯誤,則傳回數值 0 (零)。
按圖操作,在文件插入且函數(語法7)。


{ =AND(1,1) }(語法8)
(語法7)是真的馬上可以計算出東西,會在文件上出現「1」。



第九步,如下圖分別將(語法6)和(語法7)取代(語法8)

下面就是做好的小水餃語法:
{ =AND({ COMPARE { DATE  \@ "d" } < 21 }, { COMPARE { DATE  \@ "M" } = 1 }) }(語法9)
你可以大概看看他的功能在那裡?





第十步,現在又要出動「= (Formula)」了,要將現在的年份減1,用它來執行數學計算。


{ =D-1 } 的D置換成{ DATE \@ "e" }形成:{ = { DATE \@ "e" } - 1 } (語法10)



第十一步,眼睛張,看看下面張圖,我們要包一顆很大的水餃,將(語法9)和(語法10)取代與(語法4)部分文字。
包完之後的語法如下:

{ IF { =AND({ COMPARE { DATE  \@ "d" } < 21 }, { COMPARE { DATE  \@ "M" } = 1 }) } = 1 "{ = { DATE \@ "e" } - 1 }學年度 第一學期" "{ = { DATE \@ "e" } - 1 }學年度 第二學期" }(語法11)


看看邏輯圖,我們的進度,總之,快完成了!




第十二步,用(語法11)取代(語法3)

恭喜!到這裡已經完成了
,亮黃色的部分是剛剛取代完成的語法,下面這一大串語法可以自動取得學年度和學期,服用它可以達到提早下班的效果!

{ IF { DATE  \@ "M" } >= 9 "{ DATE  \@ "e" }學年度 第一學期" { IF { =AND({ COMPARE { DATE  \@ "d" } < 21 }, { COMPARE { DATE  \@ "M" } = 1 }) } = 1 "{ = { DATE \@ "e" } - 1 }學年度 第一學期" "{ = { DATE \@ "e" } - 1 }學年度 第二學期" } }(語法12)


不得不抱怨一下,功能變數的介面不是很好,難免語法擠在一起,看起來十分頭大,這點各位得多花點心思了~!





沒有留言:

張貼留言