假设我有一个 Excel 电子表格,其中包含学生详细信息和学生参加类(class)的日期。假设行标题是:
姓名 - 学生年级 - 类(class) A 日期 - 类(class) B 日期 - 类(class) C 日期等...
显然,每个学生都有一个单独的行,其中包含学生的成绩和学生参加的类(class)的日期。我想避免对表格进行修改,因为格式已经建立了一段时间。
我正在寻找某种方法来统计具有特定年级、在特定日期之间参加类(class)的所有学生。例如,统计所有在 2012 年 1 月 1 日至 2012 年 3 月 31 日期间参加类(class)且成绩为“C”的学生。
我猜最终的公式将是日期范围列上 COUNTIFS 和 MAX 的某种组合,但我不知道如何逐行应用它。
非常感谢所有建议!
最诚挚的问候, 克里斯
最佳答案
假设您的成绩为B2:B100
和日期分为 5 列 C2:G100
那么您可以使用此公式来计算在特定日期期间参加类(class)的特定年级的学生人数。
=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
是特定等级 ( C
)
{1;1;1;1;1}
部分取决于日期列的数量,因此如果有 7 个日期列,则需要将其更改为 {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)))
通过 CTRL+SHIFT+ENTER
确认
关于excel - 将 Excel COUNTIFS 与聚合函数相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9962881/