excel - 将 Excel COUNTIFS 与聚合函数相结合

标签 excel excel-formula

假设我有一个 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)

哪里J2K2是期间的开始日期和结束日期( 1-Jan-20121-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/

相关文章:

excel - 如何使用 IF 公式根据其他列中的数据显示空白或 0?

php excel 导出 - 文本被分成新行

java - Apache POI 和 SXSSF : Number of rows always 0

excel - 总结不同工作表中的真实情况

Excel:在单元格中搜索多个术语

Excel : Data Validation, 如何强制用户输入 2 个字符长的字符串?

excel - #Excel - 如何比较不同长度的两列并在单独的列中提取差异?

python - pandas 中 header 和 Skiprow 的区别不清楚

vba - 如何选择不包含某个单词的单元格

java - 使用 Apache POI 从 Java 应用程序删除行时不更新 Excel 公式