我有一個從包含學生資訊的資料庫中提取的查詢。表格具有以下列:StudentID、CourseID、CourseGrade。
CourseGrade 欄位可以包含以下任意值:“Satisfactory”、“Above Average”、“Average”、“Fair”、“Poor”,最後是“Withdrawn”。
將指派 2 位輔導員為這些學生提供建議/輔導。
筆記:一名學生可以只選修一門課程或多門課程
每位輔導員需要分配給相同數量的學生(整個學生清單必須分成兩半,除非唯一學生 ID 的數量為奇數,在這種情況下,一名輔導員將再分配一名學生)。無論學生註冊了多少課程,都只能為他們分配 1 位輔導員。
這就是我想要實現的目標:
我想在名為 CounsellorNbr 的表格中添加第四列,並遍歷表中的所有行,並交替向每個學生記錄添加值「1」和「2」。同樣,如果相同的 StudentID 出現在多個課程的相鄰行中,則兩者都應在此新列中獲得相同的編號。
作為添加數字 1 或 2 的列的可接受的替代方案,StudentID 列可以用兩種顏色之一突出顯示。如果那更容易的話。
我唯一可以使用的程式是 Microsoft Excel 和 Access。最終,我希望能夠運行一個巨集來完成這項任務,因為這是非技術人員經常需要完成的事情,但是我無法確定需要什麼類型的函數來遍歷這樣的列表,按照我上面的描述添加值(或單元格顏色)。
我將非常感謝任何有用的指示建議或起點。
答案1
設定D1
為1,設定D2
為
=IF(A1=A2, D1, 3-D1)
並向下拖曳/填充。這表示:如果前一行的 StudentID 等於目前行的 StudentID,則這是該學生的次要行(即,這是學生的多行資料簇的一部分,並且不是第一行)線)。在這種情況下,該行的 CounsellorNbr 應與上一行的 CounsellorNbr 相同(因為這兩行屬於同一學生)。否則 ( A1
≠ A2
),這是學生的第一行,因此我們要從前一行中分配另一個 CounsellorNbr。有多種方法可以做到這一點,但最簡單的是算術:從 3 中減去。
如果你將來有超過 2 位輔導員(例如 5 位),你可以將3-D1
上面公式中的 替換為有點簡單的
IF(D1=5, 1, D1+1)
其中說,“如果前面的學生找到了最後(第五)個輔導員,那麼這個學生就得到了第一個輔導員,否則就繼續尋找下一個輔導員”,或者更藝術化
MOD(D1,5)+1
其中說:“將前面的輔導員編號除以 5,取餘數,然後加 1。”這看起來比實際上更複雜:
- 1÷5 是 0 餘數 1
- 2÷5 是 0 餘數 2
- 3÷5 是 0 餘數 3
- 4÷5 是 0 餘數是 4
- 5÷5 是 1 餘數 0
所以它的計算結果與另一個公式完全相同;添加一個,除非我們在最後一個,在這種情況下我們循環回到第一個。