2020年2月1日 星期六

如何將紙本表單轉為 Google 表單後,讓填寫人填寫完後轉為紙本表單格式印出。

我們在工作常有一些制式的紙本表單,需要定時發佈給個人或單位填報繳回,七請八催收齊後,還要在將紙本的資料在鍵入表格匯整,這樣等於同樣的填報動作要做兩次,除了浪費人力外,也增加人為錯誤的機率,這時我們可以用Google 表單發佈給個位或單位填寫,來避免上述問題,但是有些紙本調查表單係因應法規或規定所產生的,而且需要有核章過的紙本紀錄留存(在大公司跟公家機關工作的應該會暸解我的意思),這時就會產生問題,這時就會想有沒有一種辦法,讓填寫的人填寫完後,直接轉成紙本表單的格式印出核章交回留存。

要達成這樣的目標,可以在 Google 表單的資料轉入 Google 試算表中著手,下面以實例說明,現在假設我們有一個紙本表單格式如下:




我們將其轉為 Google 表單結果如下:




設假設 Google 表單填表人已填列資訊如下:




要將填表人所填資料帶入最上面所述紙本表單的格式中,可在 Google 試算表中新增一個工作表,在本例將工作表名就定為「表單」,並將紙本表單格式設定好。




接下來要將填表人所填之資料帶入表中,可用以下兩種做法:


無論是用前述二種方法的那一種方法,都要有一個填表人唯一代碼,去做 搜尋詞 ,這可以是人員的員工編號、機關代號或是其他可代表唯一的代表號,在本例就是 ID 編號,故紙本表單格式中的 ID 欄位,設定為讓填表人輸入其 ID 編號 ,姓名 及 出生年月日 這二個欄位,就可由 ID 編號去搜尋 表單回應1 內的資料,在本例中因為允許填報者重複輸入,故用第2種做法,姓名 及 出生年月日 的語法如下 :

  • 姓名:
index(query('表單回應 1'!A:D,CONCATENATE("select D where B=",B3)),rows(query('表單回應 1'!A:D,CONCATENATE("select D where B=",B3))),1)

  • 出生年月日
 index(query('表單回應 1'!A:D,CONCATENATE("select C where B=",B3)),rows(query('表單回應 1'!A:D,CONCATENATE("select C where B=",B3))),1)

經過上述設定後,以下為輸入 ID 代號為 1001 的結果。


 需要列印時,選擇 Google 試算表 [檔案]->[列印] 即可。


以上雖完成主要功能設定,但還有下列細項要設定:

  • 為避免填表人看到其他人所填的資料內容,可將表單回應的工作表隱藏,此隱藏不影響 Google 表單的運作。
  • 前面所用函式在 ID 欄位未填值時,會出現 #VALUE! ,不太美觀而且易造成誤解,可以用 iferror 函式來避免出現此一情形,例如以下:
iferror(index(query('表單回應 1'!A:D,CONCATENATE("select D where B=",B3)),rows(query('表單回應 1'!A:D,CONCATENATE("select D where B=",B3))),1),)

  • 為了避免前面辛苦設定的函式被不小心誤刪,可以將工作表設為保護,但是記得要將 ID 這一欄位設為除外欄位,否則填表人將會無法使用。
  • 接著為保持操作一致性,可用 Google 協作平台將 Google 表單及 Google 試算表放在一起,利於填表人作業,如以下影片所示 :

以上介紹如何將紙本表單改為 Google 表單後,保有紙本表單格式輸出的作法,即可結省人力,也可達到紙本表單輸出核章留存的效用,有興趣的朋友不妨可以試試看。




沒有留言:

[Excel]如何創建自定義函數

在 Excel 內建函式中找不到自已想要的函式怎麼辦?事實上我們可以自已建一個,以下是一個簡單的Excel自定義函數示例,用於將民國年轉為西元: Function 民國轉西元(x As Double) As Double     民國轉西元 = x + 1911 End Func...