结合Excel COUNTIFS和聚合函数
假设我有一个Excel电子表格,其中包含学生的详细信息和学生参加的课程date。 可以说,行标题是:
名字 – 学生成绩 – 课程评估date – 课程安排B – 课程安排C等
那么显然每个学生都有一个单独的行,包括他们的成绩和学生所在课程的date。我想避免对表格进行修改,因为格式已经build立了一段时间。
我正在寻找某种方式来计算所有具有特定年级的学生,这些学生在特定date之间参加了课程。 例如,计算2012年1月1日至2012年3月31date间参加课程的“C”级所有学生。
我猜最后的公式将会是date范围列上的COUNTIFS和MAX的某种组合,但是我看不到如何在逐行的基础上应用这个。
所有的build议非常感谢!
最好的问候,克里斯
假设你有B2:B100
成绩和5列C2:G100
date,那么你可以使用这个公式来计算特定年级学生在特定date学习课程的人数。
=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
)的开始和结束date, I2
是特定等级( C
)
{1;1;1;1;1}
部分取决于date列的数量,所以如果有7个date列,则需要将其更改为{1;1;1;1;1;1;1}
…..或者你使用这个版本dynamic调整公式
=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
更新
对于特定date范围内的不同成绩的数量,假定您有一个有限的成绩列表,然后在工作表的某处列出,例如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)))
用CTRL+SHIFT+ENTER