1.下表為某學校單位所開設的一系列選修課程,公告後將由學生自由選擇所要上的課(1個人可選多個課程),選課結束後,學校再依各科目選課人數決定要開設幾個班。若一個課程的選修人數超過40人則該科目會開複數班 [例如"微積分Ⅰ"若有92人選,則會開三班,即微積分Ⅰ(A)、微積分Ⅰ(B)、微積分Ⅰ(C)]。
2.假設學生選完課,統計各科目選課人數後,學校決定開設下列班級,並假設已覓得師資及協調好上課日期及節次,其中 day_1~day_6欄位內的數字意義為[固定為6碼]:
3.由於課程實施日期及節次有可能會重疊(即衝堂),且每個學生的選課需求、課程數、喜好時段均有所不同,但學生最終的選課結果是不可以發生衝堂情形,因此如何有效地幫學生排出不衝堂的課表是致關重要的。(針對這個如何將學生的選課資料配合學校開課資料自動編排出不衝堂且每班人數平均的巨集程式則不在此篇重點)
4.假設經過一番編班程序(即下表中"開課名稱"欄位填入班級),每位有選課的學生選課資料結果如下範例(共684筆資料):(底色為白色的學生為只選1個課程的學生,這種情形是不可能有衝堂情形的,其餘底色非白色的是1個學生選擇多個課程的情形,這就有衝堂的可能性了)
5.為確保每位學生沒有發生衝堂情形,所以要逐一比對每位學生所選課程的上課時間、節次是否有衝突,依據的是上方第二個表格的"day_1~day_6"欄位內的數據資料,並在上表最右邊加一個"衝堂chk"欄位,以利巨集程式註記衝堂情形:
6.按這裡下載範例檔[巨集程式]!(請不要在google雲端內執行,請下載後用office excel開啟)
7.下載後開啟之,此時有2個工作表:(請按下"啟用內容"鈕 )
"課程開課資訊"工作表的內容 |
"學生選課資訊"工作表的內容 |
8.(1)點選 "檢視" => (2)選取 "巨集" => (3)選取 "檢視巨集"
9.(1)選取 "trouble_chkall"巨集程式 => (2)點選 "執行"鈕,開始跑程式:
10.一段時間後程式跑完,跳出檢查完成對話框[會顯示衝堂人數及堂次],請按"確定"鈕。另外若有衝堂的學生在其"衝堂chk"欄位會顯示"衝堂"字様。
12.VBA巨集程式請自行參閱檔案中VBA Project裡模組內的"Module 1"(密碼:108)
13.謝謝收看!歡迎批評、指教。