需求和邏輯的橋樑 -「虛擬碼」概念~以Excel為例

關鍵字:虛擬碼(pseudocode)、Excel 基本操作、Excel 跨工作表

有時候會有朋友詢問關於Excel的操作,坦白說自己對Excel細瑣操作並不熟,就跟使用其他工具軟體一樣,很多指令久沒操作也會忘記。

軟體運用重點不在「記住繁瑣指令」,而是「了解使用需求」

但我也發現,很多時候軟體運用出了問題,關鍵往往不在「記不住繁瑣指令」(因為網路要查詢非常方便),而是不知道「需求為何」,因此不知道該抓甚麼「原始資料」,或者無法清楚描述「處理過程」,當然也無從找「關鍵字」。

對照虛擬碼概念,思考問題本身的處理流程

以前學習程式語言之前,會實作虛擬碼(pseudocode),此概念簡言之,即包含:輸入(Input)、 運算(Computation)、輸出(Output),對照前面所言,也就是:「原始資料」、「處理過程」、「需求內容」。其先不急於了解程式語法邏輯,而是嘗試以有條理的方式描述,以便能「專注於問題本身的處理流程」。

網路當然有很多類似劃出流程之分析軟體,但重點在於如何思考,所以用手寫來描述也可以。內容不外乎:
1. 需求內容──輸出(Output):
由電腦協助產生輸出的結果,即需求內容。

2. 原始資料──輸入(Input):
根據上述需求,往前「追溯源頭」使用者須輸入之原始資料項目,而當發現無法找到相關原始資料,則需考慮重新「增設原始輸入資料項目」,或從「其他輸出(Output)」去擷取,如:每季統計資料來源,是從每月輸出結果抓取的。

3. 處理流程──運算(Computation):
思考如何把2.原始資料,透過運算轉化成1.需求內容。

實作範例──以Excel跨工作表之統計為例

之所以採Excel跨工作表之統計為例,是因為實務作業時,多半為多人分開輸入資料,等到特定期間才彙整合併。所以會使用跨工作表,甚至是跨檔案來計算。

【例子說明】:
back2base機構,成員甲、乙兩人,針對輔導訪談對象,想統計出各種輔導方式次數之月小計、每季合計。

【虛擬碼描述】:
1. (輸入):人工輸入甲、乙每月次數
2. (運算):加總1.的兩人資料
3. (輸出):產生兩人每月小記

4. (輸入):自動擷取3.甲、乙連續三個月之每月小計,不必重新輸入
5. (運算):加總4.的兩人資料
6. (輸出):產生兩人每季合計

【操作說明】:
1. (輸入)人工輸入甲每月次數到【甲工作紀錄.xls】,同理乙

2. (運算)加總1.的兩人資料到【back2base工作紀錄.xls】

跨檔、工作表擷取甲、乙資料,彙整到back2base檔,儲存格C2公式
=SUM('[甲工作紀錄.xls]1月'!C2,'[乙工作紀錄.xls]1月'!C2)

並將上述儲存格C2公式,以拖曳方式複製到直列、橫列之內容

設定back2base表中直列、橫列之小計公式

3. (輸出)產生兩人每月小計

將上述設定好直列、橫列小計公式,以拖曳方式複製完成back2base機構加總兩人之每月小計

以此概念類推虛擬碼 4~6 Excel操作說明。

結語
當然實際工作的需求要複雜得多,但「架構大同小異」。此僅想藉由簡單例子,來說明如何將虛擬碼(pseudocode)作為一般「使用需求」和「程式設計」之間的溝通橋樑,不管是請專業程式設計開發系統,或個人使用工具軟體,皆可善加利用。

至於Excel操作指令,經常使用就會了解,如果忘記再搜尋關鍵字或參考之前檔案公式即可,無須刻意記住,重點仍在於「目前步驟究竟想做甚麼」,使用就不容易混亂。

【附註】
1. Excel 彙整自其他資料的檔(以上述為例是back2base工作紀錄.xls),每次重新開啟時,會出 現要求更新連結,這是為了跟源頭資料(以上述為例是甲工作紀錄.xls、乙工作紀錄.xls)同步更新。因此如果源頭資料改變,記得按【更新】;另外,源頭資料若沒有放在原本位置,則擷取資料會有誤。
2. 承1,若只想「一次複製資料值」,後續「不再使用類似複製公式」,最簡單方式即選取資料來源後,先貼到Word,再從word複製到輸出工作表上。

引用本文:http://back2base.blogspot.com/2011/01/excel.html

留言