通过添加具有值的列将数据均匀地分成两半:根据特定单元格值 1 或 2 - excel

通过添加具有值的列将数据均匀地分成两半:根据特定单元格值 1 或 2 - excel

我从包含学生信息的数据库中提取了一个查询。该表包含以下列: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 相同(因为两行都是同一个学生的)。否则(A1A2),这是学生的第一行,因此我们希望从前一行中分配另一个 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

因此它的结果与其他公式完全相同;除非我们已经到了最后一个,否则就加一,在这种情况下我们会回到第一个。

相关内容