如何利用Excel來設計電子問卷調查?

在之前的文章中(利用Word來設計電子問卷)介紹使用word來設計電子問卷,之後有讀者問到是否可以使用Excel來設計電子問卷,其實只要能夠傳遞問題資料給調查的對象,而被調查的對象可以將填寫的資料傳回調查者,應該就可以做為問卷調查的工具,在Access中就有提供利用發送email給使用者填報,再回傳至資料庫的功能。

image

不過有些使用者並不熟悉Access軟體的操作,而且在微軟釋出的版本中有些並不包括Access在其中,Word與Excel還是大家最習慣使用的軟體,所以為什麼會有使用者希望知道是否可以用Excel製作電子問卷。

其實製作問卷調查的工作流程不外乎:

1.問卷設計製作

2.問卷發送

3.問卷回收

4.問卷統計

5.資料分析

本篇文章把重點放在介紹利用Excel來製作問卷與問卷資料的統計。

問卷設計製作:

問卷題目的設計是一門學問,這不是我擅長的部分,市面上有很多市調研究的書籍,讀者可以自行至書店找,這篇文章重點放在如何利用Excel製作已經設計好題目內容的電子問題。

假設我們要調查各學校97學年度、98學年度的入學的新生人數與班級數及今年預定招收的新生人數與班級數,做為某項教育研究的統計資料。

我們可以在Excel中將表格設計如下

image

我們希望使用者打開此工作簿時的樣式與我們在電腦看到的一樣,而且希望使用者把要填的資料填在標題之下的資料格,所以我們要做點額外保護設定,在Excel2007我們可以這樣做:

1.點選『校閱』/『變更』

image

先設定『允許使用者編輯範圍』,這個設定目的是限制使用者能夠輸入的位置範圍,避免填答者填錯位置。

image

點選『新範圍』,在表單中將要提供填寫的範圍參照,填入『參照儲存格』文字框

image

,或者點選右邊image 鈕,叫出參照位置的選取表單image ,將範圍選取。

再點選image回到新範圍表單按下確定。

image

在『允許使用者編輯範圍』表單按下確定完成設定。

image

再來要讓設定生效我們要設定保護工作表,在『變更』功能區點選『保護工作表』

image

在保護工作表表單中,如參數如畫面設定,這樣的設定只允許使用者選取工作表資料格,與在允許編輯的範圍進行編輯,再輸入密碼,按下確定重複確認密碼即可完成保護設定,這樣填問卷的使用者只能在我們設定的範圍填寫了。

image

image

如果在其他範圍想要填寫會出現禁止的訊息!

image

再來我們將不必要的工作表刪除,並將問卷的工作表更名為『統計資料』

image

這樣使用者只會看到一個工作表,避免填錯。

image

問卷的統計:

利用Excel檔案作為電子問卷,回收之後如何統計資料?不像一般的網頁問卷背後有資料庫的支援,可以即時統計問卷結果,像此種方式就如同word的問卷,如果問卷數目多手工統計真的不是一個好的方式,針對網友的問題我把『資料處理過濾增益集2.0.3』做了一些修改以方便進行資料統計,如果網友是於本文發佈之前下載者,請移除『資料處理過濾增益集2.0.3』再至增益集工坊下載。

以上面的問卷資料為例,假設我們回收了三份檔Excel問卷調查檔,我們要把資料抓出來,我們可以這樣做:

1.打開Excel程式,點選『增益集』功能區

image

點選『資料處理過濾增益集2.0.3』增益集中『正規比對資料過濾』/『文字資料擷取會整』

image

叫出主表單

image

設定『資料處理對象』為工作簿,因為每一個問卷是一個工作簿。

image

設定擷取資料的參數(所謂的資料比對樣版),勾選『手動輸入樣版參數』

image

因為我們只要填報的資料,所以在參數輸入部分設定如下:

『比對欄位』的值設為1,表示比對的第1欄的值是否為”學校名稱”。

『起終比對欄位』表示開始比對與結比對以第1欄資料為對象。

勾選『排除符合資料列』代表只要不包括”學校名稱”這一串文字的資料列,我們都擷取寫入至一個工作表中。

『工作表名稱比對』的參數輸入”統計”表示只要工作表名稱含有統計2個字的工作表我們才處理。

資料寫入方式因為勾選『手動輸入樣版參數』所以只能設定『寫入一個工作表中』

因為擷取資料已經含有辨識資料來源的資料(學校名稱),所以不需要勾選『加入來源資料表名稱』或『加入來源工作簿名稱』

輸入『保護密碼』是因為我們的工作表有設定保護,如果沒有輸入正確密碼,則無法擷取正確的資料。

image

再來只要設定資料來源即可,點選『讀入的資料』的『瀏覽』鍵,在檔案瀏覽視窗中選取Excel檔案按下『開啟』即可,可以多重選取。

image

讀入Excel檔案目錄資料,按下主表單的『確定』鈕。

image

完成擷取如下:

image

再將標題列複製插入即可得到一個數值的統計表

image

資料處理過濾增益集2.0.3正式發佈(新功能介紹一)

利用連續假期把一些程式做了一些更新,資料處理過濾增益集2.0.3這個版本主要更新的部分在兩部分,以下就以下更新的部分做一簡單介紹。

第一部分是『文字資料擷取』:這個功能原本僅做文字檔案的資料擷取處理,後來新增Excel工作表資料處理。

image

新增加入資料來源的標記於擷取後的資料欄位,這樣有助於進行各個資料表合併時可以註記資料來源,另外原本在選取區或工作表分割時保留的『分割比對樣版』參數,在處理工作簿資料擷取保留作為資料表參數的設定,這些參數主要是應用在合併不同工作簿的資料表。

image

舉例來說我們拿到一筆學校的Excel資料(如下圖一資料),必須將它依照各校分割成不同的檔案寄給各校,如果只有幾個學校,排序篩選之後手動複製至新的工作簿存檔還好,但是如果幾十所學校就不是一件輕鬆的工作,利用這個功能我們可以將這個工作交給電腦去做。

image(圖一)

如何做?

1.因為我們要依照學校分割資料,為了加速處理的速度,首先我們先把資料表依照第一欄高中職的學校名稱進行排序。

image

2.我們要取得各校的名稱,所以把第一欄學校名稱資料拷貝至新增的工作表。

image

3.利用『資料』/『移除重複』,這樣很快就取得各校名稱的資料。

image

image

image

image

此資料將做為篩選條件之用。

4.再插入一個新工作表,準備作為建立篩選條件的資料表,再點選『增益集』/『正規比對資料過濾』/『批次產生樣版資料檔』,在表單中勾選『Excel樣版抬頭』選項,再點選『加入批次樣版資料表抬頭』,在『加入範例資料』對話框選擇是,讓範例資料幫助我們了解各個欄位資料的目的,不要按『產生』,我們只要Excel工作表,不需要產生文字檔案的篩選條件,直接關閉表單。

 

image(點選『加入批次樣版資料表抬頭』)

 

image(點選『加入批次樣版資料表抬頭』)

 

image(點選『是』)

image(產生篩選的批次篩選的作業表資料)

5.將學校的名稱資料複製至『資料列比對樣版』與『檔案』這個兩個欄位,『資料列比對樣版』這個欄位是篩選的條件,『檔案』這個欄位是篩選之後,若是要產生一個篩選結果儲存在一個工作簿,則儲存的檔名即為此『檔案』的欄位資料,目錄則與被處理的資料在相同目錄下。其他參數欄位都清空不需要使用。

image

6.如果希望篩選的資料能夠包括標題列,則必須在資料比對樣版加入"|高中職名稱",所以資料比對樣版就變成"私立辭修高級中學|高中職名稱"、"市立三民高級中學|高中職名稱"。

image

7.建立好樣版後,點選『文字資料擷取』。

image

image(在表單中點選『資料處理對象』,勾選『工作表』)

image(分析樣版資料選擇先前所建立之樣版資料範圍,讀入的資料選取資料所在工作表,資料寫入的方式選擇『一篩子資料一個工作簿』,設定之後按下確定,程式會開始進行篩選資料表的動作)

8.篩選之後,在原來的工作簿所在的目錄會產生篩選出來的檔案,如果我們將全部的分析樣版資料都選取進行處理,則產生的檔案應該有56個,檔名為各校的校名,在以下影片影片中只示範篩選四個學校的資料。

image

 

9.如果要反向將各個工作簿中的資料合併在一個工作表,舉例我們要將前面步驟產生的四個工作簿的中學校資料合併。我們可以這樣做,在主程式表單『資料處理對象』選擇工作簿,樣版參數改用手動輸入,因為我們要將所有資料匯整在一個工作表中,所以只要一組篩選條件即可,我們比對的欄位設定在第1欄的資料,我們不要每個工作表的標題列,所以我們把比對樣版設定為"高中職名稱",然後勾選『排除符合資料列』,這樣就可以將標題資料列排除,『工作表名稱比對』我們輸入"中"這個值,表示我們只篩選工作表名稱有中字的工作表,寫入方式請指定在『寫入一個工作表』,我們如果希望資料能夠標示來源檔案,可以勾選『加入來源工作簿名稱』,按下『確定』即可。

image

完成的結果如下:

image

操作步驟影片

office增益集開發心得筆記一(安裝佈署與增益集類型)

最近有一些網友反應:安裝了增益集所需的相關檔案卻無法正常啟動增益集。這樣的問題在從事設計增益集的過程中,其實一直有發生,很多到現在依然沒有找到解決方案,現在越來越複雜的office功能與作業系統環境,完全相容真的是一個不容易達成的任務,究竟自己不是一個專業的程式設計者,也沒有那麼多設備與環境可以測試,很多時候問題都是透過使用者反應才發現。

同一個增益集在某些環境下無法啟動或正常使用,我的經驗發現除了與新的作業系統的安全要求有關,也和開發增益集的工具有關,雖然微軟已經宣佈win7支援vb6開發的程式,但之前我利用vb6增益集介面所開發的增益集,只能在xp作業系統中使用,拿到win7或vista安裝使用,就是無法正常啟用。但是利用c++依照com的標準去設計的增益集,就沒有這樣的問題。

另外很多剛學習設計增益集的初學者,按照書本範例利用vsto來開發增益集,程式在vs2003或vs2005中跑都沒有問題,但是一但封裝成安裝檔案拿到沒有裝vs的環境,安裝了怎樣就是跑不起來,其中的關鍵在於.net環境的安全性設定,在這兩版的vs開發者都必須做一些額外的工作,簡單的說就是要設定所開發出來的增益集或office solution 能夠被使用者的.net環境信任,否則就沒辦法在使用者的環境跑起來,關於這個問題微軟提供的方法有很多種,在msdn網站找到幾篇相關的文章,有興趣的讀者不妨看看:

Deploying Application-Level Add-ins

Deploying Visual Studio 2005 Tools for Office Second Edition Solutions Using Windows Installer (Part 1 of 2)

Deploying Visual Studio 2005 Tools for Office Second Edition Solutions Using Windows Installer Walkthroughs (Part 2 of 2)

受信任的應用程式部署概觀

逐步解說:手動部署 ClickOnce 應用程式

使用程式碼存取安全性原則工具 (Caspol.exe) 設定安全性原則

目前尚未利用vs2010開發增益集,不知道vs2010在這方面是否有改進。

了解office增益集的類型對於開發增益集有一定的幫助,不同office的系列軟體支援的類型也不盡相同,而可以開發增益集的程式語言也不只一種,有些發展歷史較早的像Excel,其支援的增益集類型就有好幾種,從Excel增益集的管理表單可以看到多種類型,雖然Excel增益集分成下圖中幾類:

image

但是如果從副檔案名稱來區分,大概有以下幾類,簡單說明:

1..xll:例如著名的分析工具箱增益集(它的檔名”analys.xll”),.xll是很早期EXCEL外掛程式類型,從Excel 4.0就支援此種格式的增益集,這種增益集是以C或C++程式語言開發出來的,這種類型自從Excel5.0之後並沒有太大改變,到了Excel2007才有一些較大的改變,在msdn有一篇關於開發.xll增益集的文章:Developing Add-ins (XLLs) in Excel 2007 ,在微軟的網站也可以找到相關的SDK。Microsoft Office Excel 2007 XLL Software Development Kit

2..xla與.xlam:這個類型是我最早認識的增益集類型,自Excel5.0支援Visual Basic for Applications,這個對於office應用的開發起了關鍵性的影響,記得自己最早接觸的關於增益集的知識,是來自於洪士吉先生的大作EXCEL 97 VBA巨集程式範例,看到書中所展示範的種種對當時的我近乎是神奇的範例,讓我見識到Excel的威力與其發展性,而且容易入門的特質,而VBA的IDE直接附加於office的系列軟體中,讓我選擇以office平台作為自己cai設計的平台。

image

只要在Excel中的VBA的IDE建立好巨集程式,然後把工作簿的IsAddin屬性改為true,檔案儲存為副檔名.xla(2003之後的副檔名為.xlam),即可發佈為增益集。Excel2007只要在增益集的管理介面選擇”Excel增益集”,按下『執行』即可

image

在增益集的表單中點選瀏覽,找到儲存增益集的位置把增益集掛上即可,或者將增益集儲存至office預設的增益集目錄,增益集管理表單自動會出現該增益集名稱,使用者只要在表單上勾選即可。

image

3..dll:這種副檔名通常是COM類型的增益集,只要依照COM的規準,可以使用不同的程式語言設計COM元件,所以COM類型的增益集可以用不同種的程式語言來開發,我習慣用VB來設計,因為與最先學習的VBA相容,再者VB將開發COM中的一些細節包裹起來,對於我們這些半路出家的開發者降低很多學習的門檻,用C++複雜多了,在VB中只要幾行程式可以完成的,C++中必須了解很多跟COM相關的細節才不容易出錯。不過VB這種好日子也沒有太久,.NET出來之後,再加上新版OFFICE的RIBBON介面,跟傳統CommandBars又不同,又必須花一段時間了解其概念。

4..manifest:這種這種副檔名是利用.NET類型程式語言所開發的COM類型的增益集,這個.manifest並不是主要的程式碼的部分,用筆記本程式打開來看,可以看到是xml樣子的檔案,記錄了增益集檔案的一些資訊,增益集管理的介面是利用這個檔案記錄的資訊去載入增益集,如果這個檔案不正確的載入會失敗。