如何利用Excel計算個別學生成績在全體學生的百分比,並換算成等級?

最近註冊組提了一個Excel問題:如何利用Excel將學生的絕對成績換算成在同一年級中全體學生的相對百分比?因為教務處為了激勵學生在課業的學習,希望將學生的絕對成績換算為相對等級成績(全年級前百分之15)給予獎勵,讓學生了解自己在同一年級中的學習狀況,不以絕對成績高低作為獎勵,是不希望變成惡性競爭,讓學生斤斤計較於1分兩分考試成績,而又能達到鼓勵學生學業的目的,尤其像本校學生人數夠多,樣本母體夠大,這種相對成績比較具有參考性。

雖然這個問題看似簡單,但是在Excel2003與2007中仔細去挖它的各種功能,好像只有"分析工具箱"增益集有類似的功能,在Excel2003與2007中並沒有提供類似的函數,使用者必須要用vba自己寫函數,而在Excel2010中新提供兩個函數PERCENTRANK.INC與PERCENTRANK.EXC可以達成這個目的。這兩個函數都可以把學生的個別成績轉換成佔全體成績的百分比,差別只在於PERCENTRANK.INC把唯一最高分當成1與把所有最低分當成0,其他的為(所勝過的人數/總人數),而PERCENTRANK.EXC把最高分與最低分不當成1與0,把(總人數+1-(大於等於該分數的總人數))/(總人數+1) 。

兩者的算法雖不同,其實當樣本數夠大差異有限,以下列假想的學生名單成績為例,利用Excel2010把學生的總分成績換算成佔全部同年級學生的百分比,再依百分比範圍分成三個等級:精熟(大於等於85%)、基礎(小於85%大於25%)、待加強(小於25%)

image

即要製作成如下表,多了兩欄百分等第與級別

image

步驟

1.在"總分"欄位右邊2欄(F與G)加入"百分等第"與"級別"兩個欄位標題。

2.先點選F2此儲存格,再點選"公式"功能區、其他函數\統計\PERCENTRANK.INC

image

3.在"函數引數"表單,Array引數代表全體學生的成績範圍,x代表要計算的成績,Signaficance代表計算取的小數位數(不設定預設取3位),以下圖參數為例,是要計算9年1班1號的成績在全部9年級共648位學生中所佔的高低百分比,取到小數點第3位。

image

4.計算的結果為0.825,代表9年1班1號的成績贏過82.5%的人

image

5.接下來我們要把其他學生計算出來,難道要一個個重複剛才的動作嗎?當然不是,有648個學生不瘋掉才怪,我們要利用Excel中我個人認為最方便資料輸入的功能"自動填滿",來幫助我們快速完成這個動作,在執行"自動填滿"前首先我們要改一下我們建立的公式的一個小地方,公式如下:

=PERCENTRANK.INC(E2:E649,E2)

如果要透過"自動填滿"的功能,我們必須將Array這個資料範圍參數改成絕對參照,也就是將公式改成如下

=PERCENTRANK.INC($E$2:$E$649,E2)

將Array的引數由E2:E649改成$E$2:$E$649,代表在執行"自動填滿"時不會變更此範圍,如果是E2:E649則沿欄位下拉自動填滿"自動填滿",程式會自動變動參照的列位,例如變成E3:E650,這樣就無法產生正確的計算。

image

6."級別"的部分,依照前述步驟改用IF函數,函數的內容如下,即可完成我們的目的。

=IF(F2>=0.85,"精熟",IF(F2<0.25,"待加強","基礎"))

範例檔案

利用Word來設計電子問卷四(問卷的回收方案)(ps:帶頭升級 Office 2007,是害群之馬嗎?)

在前三篇文章我們詳述了如何利用word製作電子問卷及問卷密碼漏洞問題,但是另一個問卷調查的核心問題:如何回收問卷?我並沒有接續的詳加說明,隔了那麼久才發表。主要的原因是利用word來製作問卷這個課題,受到不少網友的質疑,認為不如網頁或利用google提供的問卷調查功能那麼方便,尤其有些絕對自由軟體的擁護者,認為這個方式又是被微軟的軟體綁架。甚至還有人傳了一篇某大學教授的文章給我(帶頭升級 Office 2007? 別當害群之馬),這一篇文章我在很久以前就看過,文章中鼓吹一個論點:不要傳遞.docx的格式檔案給別人,以免害別人被微軟綁架。(原文:散佈最新的專利檔案格式 (例如 .docx) 強迫他人升級, 就像製造二手煙一樣…)

對於這種幾乎近於宗教信仰的支持某種理念,我個人的看法是只要不要強迫別人跟著信仰就ok!

只是這篇文章強烈批判別人升級使用微軟Office的產品是害群之馬,這未免太過!

該文主張使用微軟專利格式是傳播二手煙、是傳播病毒,因為微軟的格式有專利,不是開放格式要抵制!

我的看法這種邏輯也是值得商確,現代社會設立專利保護的法律,看似只是保護專利擁有者的利益,但是背後也有推動社會進步的目的,歐美社會在科技創新與商業模式創新領先其他社會,與其對專利的高度保護有很大關係。當然不可諱言的法律不可能完美,也許過度的專利保護反而阻礙社會的進步,所以批判的對象也許不應是微軟,而是西方過度擴大的專利保護範圍!

談到這裡最近整修浴室為了徹底解決浴室臭味的問題,與水電師傅反覆實驗幾個禮拜,終於把臭味的問題,其中讓我印象深刻的是一個效果比『上不來』這種落水頭好的『防臭落水頭』,兩者價格差了6倍,因為後者有專利所以價格差很大。仔細去研究所謂的『防臭落水頭』,只是一個簡單的構想設計,把水管的儲水彎的原理,直接與落水頭結合而已,為什麼那麼多人沒有想到。

寫一篇小說是創作,不會有人批評你不免費給別人看或引用,一個小小的『防臭落水頭』設計,也有專利保護,也不會有人質疑,想一想那些埋頭苦寫程式開發軟體的人還真可憐。如果自由只能是某些人認定,這種倒底是真自由或是另一種不自由!

以上發發牢騷,看看就好!

回到主題如何回收電子問卷?派送可以用電子郵件,回收當然也可以用電子郵件,我要再次強調這個方案是針對沒有伺服器資源的人,不要再與我爭論,如果自己有網路伺服器資源,可以直接設計互動網頁的問卷調查,不需要使用這種方式!

另外解決問題的方案有很多種,這種透過電子郵件回收問卷調查資料的方法,現在已經很多像google的線上試算表文件,微軟的outlook投票功能或access收集資料的功能,雖然都有一些限制,但大致上都可以達到類似的目的。

我個人派送問卷是使用ExcelMail(請自行參閱ExcelMail3.0群組寄信軟體介紹(三):批次寄送附加檔),而回收的時候我是使用outlook來進行回收,利用outlook的規則與通知我可以將問卷的回信過濾集中在特定的資料夾。

image

例如我已經將問卷調查回信集中於”收件匣”中的”問卷調查”資料夾,我要把該資料夾中的信件附件都儲存至

“f:\問卷調查\"這個目錄。

image

如果問卷量不多我會手動去下載每一封回信的附件,但是如問卷的回信量很多,我會利用以下的用VBA寫的巨集程序,把檔案集中下載在某一個資料夾。此程序是修改微軟outlook的說明範例

Sub SaveAttachmenttodir()
    Dim myAPP As Outlook.Application
    Dim myItem As Outlook.MailItem
    Dim myAttachments As Outlook.Attachments
    Dim i As Long, j As Long

    Dim myFolder As Outlook.folder
    Dim myNamespace As Outlook.NameSpace

    Dim strfilepath As String

     strfilepath = “f:\問卷調查\"
    Set myNamespace = Application.GetNamespace(“MAPI")
    Set myAPP = Outlook.Application
    Set myNamespace = myAPP.GetNamespace(“MAPI")
    Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox).folders.Item(“問卷調查")

    For i = 1 To myFolder.Items.Count
        If TypeName(myFolder.Items(i)) = “MailItem" Then
            Set myItem = myFolder.Items(i)
            Set myAttachments = myItem.Attachments
             For j = 1 To myAttachments.Count
             myAttachments.Item(j).SaveAsFile strfilepath  & myAttachments.Item(j).DisplayName
                Next j
        End If
        Next i

End Sub

使用方法:

1.首先必須有outlook2007或以上的版本

2.請打開outlook2007『工具』/『巨集』/『Visual Basic 編輯器』。

image

3.在專案下新增一個模組,把程式碼貼上即可。

 image

4.另外必須將巨集安全性設定為可執行的選項。

image

5.執行巨集SaveAttachmenttodir即可!

image

一個非科班程式設計者的增益集開發心得(給初學者的建議)

因為本身並沒有受過完整的資訊科學訓練,不敢在這個專業的社群部落格班門弄斧談程式設計的技術,不過因為唸研究所時教授指導的CAI研究主題,要找尋適合教師製作的輔助教學多媒體的工具與平台,讓我有機會接觸到Office增益集的設計。

因為本身是學化學的,並沒有資訊的背景,和指導教授深談過,要從零開始設計一個CAI軟體,在當時僅在學校使用過PE2與慧星一號的我,簡直是天方夜譚。所以教授希望我把研究的方向放在:尋找適合中小學教師製作的輔助教學多媒體的工具與平台,以此平台或工具設計一個範例。

在當時比較常聽到用在製作多媒體CAI的軟體是Macromedia 的 AUTHORWARE(後來被Adobe合併了),但是其學習的門檻與價格較高,中小學受限於經費與教師高授課時數,不利於在中小學推廣。所以教授希望我把目標鎖定在學校老師常用的軟體著手,看是否能利用學校所提供老師手邊常用的軟體做為設計CAI的軟體或平台,一方面避免經費的問題,另一方面希望降低老師學習的門檻,提高老師使用推廣的意願。

後來決定使用office 來做為CAI的製作工具,一方面當時office是學校老師普遍使用的軟體,二方面office 97已經提供相當不錯的多媒體整合功能,可以利用ActiveX控制項在OFFICE文件放入多媒體資料,另外office 97的VBA也提供設計互動性Office文件的可能性。

因為是留職停薪去唸研究所,有時間的壓力所以當決定以Office為平台之後,開始思考如何能快速完成教授交付的任務,經過一段時間的工作分析,先把CAI的腳本訂出來,針對腳本中可以使用Office來完成的文字與影像內容,實在無法完成的部分,再找尋其他工具,例如在CAI內容中我們要放入一個拍攝實驗影片的mpeg檔案,就利用當時還不是很普遍mpeg1影音壓縮卡,來剪輯壓縮V8所拍的影片,互動的部分我們使用VBA程式來完成,在這個過程中我學習到一些寶貴的VBA程式設計經驗。

在此與各位先進分享我的小小心得,首先Office的功能很豐富,有很多功能藏身於細節中,所以首要是把Office可以應用於我的CAI製作的功能找出來進行整合,VBA巨集成為整合這些功能很好的黏膠,透過VBA巨集程式的串聯可以使Office文件有系統的整合成一個連貫的電腦輔助教材。如先前所說:在此之前我從未接觸程式設計的東西,VBA對我來說一樣是具有難度,如何在很短時間完成教授指定的任務?當然找文獻是研究生必備的能力,就到幾個大的書店找看看有無相關的參考書籍,當時VBA程式設計相關的中文書籍並不多,找了許久找到一本洪士吉先生著作的EXCEL 97 VBA巨集程式範例。從中學習到VBA巨集程式的一些基本概念,也看到VBA程式的威力,也從中學到設計增益集的方法。

有網友問到如何才能學會增益集的設計?我有幾點個人的經驗與大家分享:

1.首先增益集是一種附加功能的外掛軟體,Addin是補原來軟體不足或不便之處,所以你必須先熟悉你要設計的增益集的容器軟體,舉例你要設計Excel的Addin(增益集),你一定要熟悉Excel的各項功能,如果你不熟悉Excel的功能與用途,除了你很難利用程式去控制Excel之外,再者你所開發的功能可能已經存在Excel中(虛工一場)。

2.要開發軟體當然至少要熟悉一種程式語言,那一種程式語言比較適合入門者來開發增益集?OFFICE支援COM的格式的增益集,所以很多程式語言都可以開發OFFICE增益集,但是根據我的經驗;初學者應該要從OFFICE本身的VBA開始,一方面是Office已經提供VBA的IDE,再者VBA的語法相對比較簡單,另外微軟附在OFFICE中的VBA文件說明相當完整。

在OFFICE的VBA IDE中,只要將程式碼中相要知道的語法、物件方法或物件屬性選取反白,按一下F1快速鍵,很快就可以查到相關的說明或範例。舉例我想知道Chdir這個陳述式的用法,只要將之反白選取,再按F1鍵即可快速找到參考。

image

image

有這樣的工具,你可以很快速去熟悉OFFICE的物件架構,因為不管用VB或C#開發OFFICE增益集其實都應用到OFFICE的物件,所以熟悉OFFICE的物件架構,才能讓您快速進入狀況。

3.另外建議初學者先不要從POWERPOINT開始,我建議先從WORD或EXCEL先下手,因為OFFICE2007中POWERPOINT沒有巨集錄製的功能。Word或Excel都有錄製巨集的功能,執行錄製巨集的功能,再操作Excel或Word,程式會自動建立相關動作指令的程式碼,可以讓我們比較快速了解程式執行指令與程式碼的關係,另外在VBA的IDE中進行單步除錯,也可以反向了解程式碼的功能。 至於像Powerpoint沒有錄製巨集的功能,只能從Office的說明中,找到Powerpoint相關的物件、方法、屬性去試我們需要的功能指令。

image image

4.善用msdn所提供的範例,利用google輸入msdn office addin development這幾個關鍵字可以找到一堆相關的參考資料,透過微軟提供的範例,可以幫助初學者上手。

如何在學校的伺服器使用php

 
有同仁問到想利用php程式語言撰寫網頁,我已經在我們學校的電子郵件伺服器設定了php的功能,同仁可以在妳的學校電子郵件帳號試試看,要進行測試,,我想有些東西,妳可能需要知道的,我大概寫了一下,如果有不清楚的部分可再討論。
 
1.利用ftp軟體連結到mail.cssh.tpc.edu.tw登入妳的帳號(舉例帳號txxx)與密碼
 
2.在妳的帳號的根目錄應該會找到名為 www 這個資料夾,如果沒有請新增一個,這個是系統設定的網頁文件目錄,也就是說妳的網頁資料必須放置在此目錄,別人才能透過網頁瀏覽器看到你的網頁,以妳的帳號txxx為例,系統賦予妳的網址為http://mail.cssh.tpc.edu.tw/~txxx
 
3.如果你建立一個網頁名稱為test.htm,放置在妳的www目錄中,網路使用者只要在網址列輸入http://mail.cssh.tpc.edu.tw/~txxx/test.htm即可看到此頁的內容,另外因為此系統為unix類型的系統,其檔案或目錄權限有三種(讀、寫、執行),授予對象分三類(檔案目錄擁有者、與檔案目錄擁有者同一群組的使用者、所有人),妳必須指定此網頁檔案權限為755使用者才能看到,755此三個數字代表之含意,我依序簡單說明
 
7代表檔案的擁有者可以( 讀、寫、執行)
5代表與檔案的擁有者同一群組者可以(讀、執行)
第2個5代表所有的網路使用者(任何人)(檔案的建立者)可以(讀、執行)
 
簡單的說:系統利用3個數字分別代表檔案擁有者、同一群組的使用者、所有人 對於檔案的權限。這三個數字分別代表三組2進位的數字
7其實代表為2進位之111,左邊算第1個位元代表讀取的權限(r),第二個位元代表寫入的權限(w),第三個位元代表執行的權限(x)。(1代表權限開,0代表權限關)
所以7代表所有權限都打開。
舉例:二進位101改以十進位表示為5,代表打開讀取與執行的權限
000改以十進位表示為0,代表關閉所有權限
所以如果妳將test.htm權限設定為700代表只有檔案擁有者才可以rwx(讀、寫、執行),其他人沒有任何權限,所以網路使用者在網址列輸入http://mail.cssh.tpc.edu.tw/~txxx/test.htm 會看不到內容。
 
4.你要測試php是否可以執行,請用筆記本或wordpad建立一個新的文字檔,內容如下
<?php
echo "php test!!!" ;
?>
然後另存新檔,將原檔案之副檔名.txt改為.php,例如存為test.php
然後再將此檔上傳,記得權限改為755,然後打開瀏覽器在網址列輸入http://mail.cssh.tpc.edu.tw/~txxx/test.php
應該會看到
 
php test!!!