假设我有一个Excel电子表格,其中包含学生参加的课程的学生详细信息和日期。让我们说行标题是:
姓名 - 学生成绩 - 课程日期A - 课程日期B - 课程日期C等......
然后显然每个学生都有一个单独的行,其中包含学生所在课程的成绩和日期。我希望避免对表单进行修改,因为格式已经建立了一段时间。
我正在寻找一些方法来计算所有具有特定年级的学生,这些学生参加了特定日期之间的课程。例如,计算2012年1月1日至2012年3月31日期间参加课程的所有“C”级学生。
我猜最终的公式将是日期范围列上的COUNTIFS和MAX的某种组合,但我看不出如何逐行地应用它。
所有建议都非常感谢!
祝你好运, 克里斯
答案 0 :(得分:2)
假设您有B2:B100
的成绩和5列C2:G100
中的日期,那么您可以使用此公式计算在特定日期期间参加课程的具有特定成绩的学生人数。
=SUMPRODUCT((MMULT((C$2:G$100>=J2)*(C$2:G$100<=K2)*(B$2:B$100=I2),{1;1;1;1;1})>0)+0)
其中J2
和K2
是期间的开始和结束日期(1-Jan-2012
和1-Mar-2012
),I2
是特定成绩({{ 1}})
C
部分取决于日期列的数量,因此如果有7个日期列,则需要将其更改为{1;1;1;1;1}
.....或者您可以通过以下方式动态调整公式使用此版本
{1;1;1;1;1;1;1}
后一个公式是一个“数组公式”,您需要使用=SUM((MMULT((C$2:G$100>=J2)*(C$2:G$100<=K2)*(B$2:B$100=I2),TRANSPOSE(COLUMN(C2:G100))^0)>0)+0)
确认
<强>更新强>
对于特定日期范围内的不同等级的数量,假设您有可能等级的有限列表,则列出工作表上的某些等级,例如CTRL+SHIFT+ENTER
然后您可以使用此“数组公式”
M2:M10
通过=SUM(1-ISNA(MATCH(M$2:M$10,IF(MMULT((C$2:G$100>=J2)*(C$2:G$100<=K2),{1;1;1;1;1}),B$2:B$100),0)))