1)生成课程名称的标题行

1)生成课程名称的标题行

我有几个学生在第一张表上选择了他们想上的课程。在第二张表上,我想根据他们的选择为每个班级生成一个列表,其中包含该班级学生的姓名。有办法吗?

在此处输入图片描述

答案1

1)生成课程名称的标题行

首先,在 sheet2 中,您需要生成一个水平的班级列表。您可以手动执行此操作,也可以使用以下公式从学生对班级 1-3 的选择中生成已使用的唯一班级名称的排序列表。它甚至可以忽略空白班级条目。我能想到的唯一两个注意事项是,您需要让列表左侧的单元格等于列表中的任何名称。另一个注意事项是,这是一个数组公式,需要CONTROL+ SHIFT+,ENTER而不仅仅是ENTER在确认公式时。当公式周围出现 { } 时,您就会知道您做对了。请注意,{ } 不能手动添加。

在示例中,我将以下公式粘贴到 Sheet2!B2 并向右复制,直到出现空白单元格。

=IFERROR(INDEX(Sheet1!$B$2:$D$9,SMALL(IF(SMALL(IF(COUNTIF($A$2:A2,Sheet1!$B$2:$D$9)+ISBLANK(Sheet1!$B$2:$D$9)=0,COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1,""),1)=IF(ISBLANK(Sheet1!$B$2:$D$9),"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1),ROW(Sheet1!$B$2:$D$9)-MIN(ROW(Sheet1!$B$2:$D$9))+1),1),MATCH(MIN(IF(COUNTIF($A$2:A2,Sheet1!$B$2:$D$9)+ISBLANK(Sheet1!$B$2:$D$9)>0,"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1)),INDEX(IF(ISBLANK(Sheet1!$B$2:$D$9),"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1),SMALL(IF(SMALL(IF(COUNTIF($A$2:A2,Sheet1!$B$2:$D$9)+ISBLANK(Sheet1!$B$2:$D$9)=0,COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1,""),1)=IF(ISBLANK(Sheet1!$B$2:$D$9),"",COUNTIF(Sheet1!$B$2:$D$9,"<"&Sheet1!$B$2:$D$9)+1),ROW(Sheet1!$B$2:$D$9)-MIN(ROW(Sheet1!$B$2:$D$9))+1),1),,1),0),1),"")

作为数组公式,请勿使用完整的行/列引用,如 A:A 或 3:3,因为这会导致执行过多的计算。

2)生成姓名列表

为了生成一列姓名,这些姓名选择标题行中的课程作为其 3 个选择之一,可以使用以下公式。在下面的示例中,此公式被放置在 Sheet2!B3 中,并复制到右侧以匹配课程名称列表,并向下复制,直到只有空白行。

=IFERROR(INDEX(Sheet1!$A:$A,AGGREGATE(14,6,ROW(Sheet1!$B$2:$D$9)/(Sheet1!$B$2:$D$9=B$2),ROW(A1))),"")

AGGREGATE 函数可以根据所选的公式编号执行类似数组的运算。当第一个参数编号为 14 或 15 以及其他几个数字时,将执行类似数组的运算。第二个数字参数告诉 AGGREGATE 忽略错误结果、隐藏行以及我认为的一些其他内容。由于类似数组的计算,再次避免在 AGGREGATE 函数中使用完整的列引用。

资料来源:Sheet1

在此处输入图片描述

输出:Sheet2

在此处输入图片描述

如果学生多次选择同一门课程,他们的名字就会在列表中出现多次。

相关内容