早上好。我对Google表格和MS Excel具有基本的了解,我正在帮助我的一些老师朋友开发一些系统,以使用Google工具自动完成他们的工作。对于这个当前的工具,我已经尝试并搜索了几种解决方案,但是我找不到任何可以帮助我找到解决方案的东西。
这种情况:(在访问此工作表的底部链接,可以在线编辑或下载该工作表):
我们每学期都有不同数量的学生在变化。它在(A)列“学生”中。根据学生的数量,我们在(B)列中拥有或多或少的“老师”。因此,它们也不是固定的。
这些学生在学期中将经历6个固定模块。他们必须通过不同的老师指导每个模块,因此他们不能重复。而且老师必须有均衡的学生人数,而不必是精确的,近似的分布。
然后,我创建了学生和教师的列表以及带有模块的表格。使用“ COUNTA”功能,我知道每个列表中有多少个项目,使用“ OFFSET”功能,将学生的姓名移动到模块“矩阵”的第一列。如果两个列表的末尾都添加了名称,则会修改矩阵。
我需要的是在模块的列中分配教师,但最多只能分配最大数量的学生,并在结束时重复该顺序。例如,我在(F2)中使用了一个公式-Arrayfromula和Isblank-其中(B)列中列出的8位教师分布在(F-模块1)列中,但它停在最后一个。我需要这种分配才能继续重复,直到E列中的最后一个学生(T1,T2,T3,...,T8,T1,T2,T3,...)
此外,我也需要在其他模块中进行此分发,但是下面的工作从“下面的老师”(下面的一行,只有第一个)开始,如工作表示例所示:在模块中2,从老师2开始;在模块3中与老师3一起,依此类推,直到模块6。(在模块2中:例如:T2,T3,T4,...,T8,T1,T2,T3,...)
< / li>最终确定,必须是当我在(A)列中添加学生或在(B)列中添加教师时,矩阵可以动态调整的方式。
我不知道该如何超越我所得到的,任何帮助将是非常欢迎的。我读过到目前为止,我认为通过Google App Script会更可行,但是随后我必须从头开始对该领域进行研究。好的,如果这是解决此问题的方法。
好,谢谢您的关注和帮助。
答案 0 :(得分:1)
是的,这可以通过Google Apps脚本来完成。
在JavaScript中,您可以按照以下方式实现某些功能:
var array = [[1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6], [1, 2, 3, 4, 5, 6]];
var teacherCounter = 0;
var modules = 6;
var teachers = 8;
var students = array.length;
for (var i = 0; i < modules; i++) {
teacherCounter = i;
for (var j = 0; j < students; j++) {
if (teacherCounter < teachers) {
array[j][i] = "T" + (teacherCounter + 1);
teacherCounter++;
} else {
teacherCounter = 0;
array[j][i] = "T" + (teacherCounter + 1);
teacherCounter++;
}
}
}
哪个返回以下数组:
array = [["T1", "T2", "T3", "T4", "T5", "T6"],["T2", "T3", "T4", "T5", "T6", "T7"], ["T3", "T4", "T5", "T6", "T7", "T8"]];
您正在寻找的是这种东西吗?
答案 1 :(得分:1)