我从包含学生信息的数据库中提取了一个查询。该表包含以下列:StudentID、CourseID、CourseGrade。
CourseGrade 列可以包含以下任意值:“满意”、“高于平均水平”、“平均”、“一般”、“较差”以及最后的“退出”。
有 2 名辅导员将被指派为这些学生提供建议/辅导。
笔记:一名学生可以只选修一门课程,也可以选修多门课程
每位辅导员需要负责相同数量的学生(整个学生名单必须分成两半,除非学生 ID 的数量为奇数,在这种情况下,一位辅导员会负责多一名学生)。无论学生报名参加多少门课程,都只能为他们分配一名辅导员。
这就是我想要实现的目标:
我想在表格中添加第四列,名为 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 中减去。3-1=2,3-2=1。
如果你将来有超过 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
因此它的结果与其他公式完全相同;除非我们已经到了最后一个,否则就加一,在这种情况下我们会回到第一个。