Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel:根据GPA和选择偏好为学生分配数据流_Excel - Fatal编程技术网

Excel:根据GPA和选择偏好为学生分配数据流

Excel:根据GPA和选择偏好为学生分配数据流,excel,Excel,我总共有64名学生根据他们的平均成绩被分配到19个不同的班级。学生们也表示了他们对溪流的偏好。只有5名学生可以分配到前三个流(A-C),4名学生分配到流D,其余15个流各有3名学生。我已将数据添加到excel表格中,但不知道如何处理这些数据以实现上述结果。我很乐意分享原始文件,但找不到上传该文件的方法。这可以在vba宏中自动解决,但稍快一点的版本速度有点快,公式有点脏。它就像你已经开始,按gpa排名 为每个学生插入2行。在这一行中,您将计算流的“填充”。如果你有成千上万的学生,你应该写一个小的宏

我总共有64名学生根据他们的平均成绩被分配到19个不同的班级。学生们也表示了他们对溪流的偏好。只有5名学生可以分配到前三个流(A-C),4名学生分配到流D,其余15个流各有3名学生。我已将数据添加到excel表格中,但不知道如何处理这些数据以实现上述结果。我很乐意分享原始文件,但找不到上传该文件的方法。

这可以在vba宏中自动解决,但稍快一点的版本速度有点快,公式有点脏。它就像你已经开始,按gpa排名

为每个学生插入2行。在这一行中,您将计算流的“填充”。如果你有成千上万的学生,你应该写一个小的宏来复制粘贴,这样你就可以每隔一行复制一次。令人遗憾的是,excel不接受将空值粘贴为无更改值

可以通过搜索/替换更改排名,也可以创建一个新的工作表,其中“所需分配”值是最想要的流的最高值。 单元格C2应如下所示:

 =20-'originalsheet'!C2
我们现在正在制作新的表格

所以您有以下行:(student-allocation-availability-student-allocation-availability)

在分配行中,您将填写上述学生的分配,在可用性行中,您将填写当前可用空间

第一个学生被分配给他或她的选择

分配行获取一个公式,用于调查当前单元格是否具有最低可能值。所以第2行:第一个学生,第3行:分配,第4行:新的可用性,第5行:学生愿望,第6行:我们在单元格C6中使用此公式

=if(sumproduct(max(($C5:$U5)*(($C4:$U4)>0)))=C6;1;0)
接下来,新的可用性就是

=C4-C6
复制并向下粘贴公式。你可能会遇到与学生的GPA完全相同的问题,但在这个计划中,你从上到下的排名是决定优先级的因素。我没有原始文件,也没有时间从一个图像构建它,但它看起来对我的小测试设置有效

比用手做稍微容易一点,但再次;如果你有数以百万计的学生,并且经常进行这种分配,请在vba部分提问

总结:

  • 按平均成绩排名
  • 改变所以最高的愿望就是最高的数字
  • 为每个学生插入2行
  • 为第一个学生手工计算,应该不难
  • 使用公式并确保单元格引用不会出错
    尝试上传问题的数据数组(也可以解析回制表符或逗号分隔的格式),如果这是一次性的,我会按GPA排序并手动分配流。如果您是为了迎接挑战,或者需要处理大型数据集或多个数据集,希望其他人有时间给出一个实际的技术解决方案。谢谢你建议手动去做,但是在一些情况下,有更多的学生优先考虑特定的流,而不是考虑可用的位置,它需要考虑他们的第二个,第三甚至第七优先,这对于手动分配来说变得复杂。