You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计数组中符合条件的行数?训练记录表格统计求助

解决Excel统计含指定日期的员工行数问题

我懂你的痛点——原来的公式统计的是所有匹配日期的单元格总数(也就是完成的任务数),但你需要的是只要某员工(行)在任意训练模块(列)中出现了指定日期,就算作一个受训员工,统计这样的行数。下面给你两种适配不同Excel版本的解决方案:

方案1:兼容所有Excel版本(包括旧版)

使用SUMPRODUCT结合MMULT实现逐行判断:

=SUMPRODUCT(--(MMULT(--($FZ$9:$GY$1915=DATEVALUE("01/02/2018")),TRANSPOSE(COLUMN($FZ$9:$GY$1915)^0))>0))

公式拆解:

  • --($FZ$9:$GY$1915=DATEVALUE("01/02/2018")):把所有等于指定日期的单元格转成1,其他转成0,生成一个和原区域大小一致的0/1数组。
  • TRANSPOSE(COLUMN($FZ$9:$GY$1915)^0):生成一个和列数相同的全1垂直数组(任何数的0次方都是1)。
  • MMULT(...):将上面两个数组相乘,得到每行的求和结果(即该行中匹配日期的单元格数量)。
  • --(...)>0:判断每行的求和结果是否大于0(也就是该行是否有至少一个匹配日期),转成1(符合条件)或0(不符合)。
  • SUMPRODUCT:对所有行的1/0结果求和,就是最终符合条件的员工人数。

方案2:适用于Excel 365/2021及以上版本(更简洁)

利用BYROW函数直接遍历每行进行判断:

=SUMPRODUCT(--BYROW($FZ$9:$GY$1915,LAMBDA(row,MAX(--(row=DATEVALUE("01/02/2018"))))))

公式拆解:

  • BYROW(..., LAMBDA(row, ...)):遍历指定区域的每一行,对每行执行后续逻辑。
  • MAX(--(row=DATEVALUE("01/02/2018"))):对当前行,把匹配日期的单元格转成1,其他转成0,取最大值——如果该行有至少一个1,结果就是1,否则是0。
  • SUMPRODUCT:把所有行的1/0结果相加,得到最终的员工人数。

你也可以用COUNT结合BYROW的写法,效果完全一致:

=COUNT(BYROW($FZ$9:$GY$1915,LAMBDA(row,IF(COUNTIF(row,DATEVALUE("01/02/2018"))>0,1,NA()))))

内容的提问来源于stack exchange,提问作者Grosi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:25:05