PBX系统通话最大并发数计算:SUMPRODUCT公式修正求助
修正PBX通话记录最大并发数的Excel无VBA公式
原公式问题说明
你使用的公式 =SUMPRODUCT(($a$2:$a$8<b2)*($b$2:$b$8>a2)) 计算的是与当前通话存在重叠的所有通话总数,而非当前通话时段内的最大并发通话峰值——这就是第四行结果错误的核心原因。
修正公式方案
方案1:适用于Excel 365/2021(支持动态数组)
使用LET函数简化逻辑,公式如下(假设开始时间在A列,结束时间在B列,当前行是第2行):
=LET( currStart,A2, currEnd,B2, events,FILTER(TOCOL($A$2:$B$8),(TOCOL($A$2:$B$8)>=currStart)*(TOCOL($A$2:$B$8)<=currEnd)), MAX(COUNTIFS($A$2:$A$8,"<="&events,$B$2:$B$8,">"&events)) )
逻辑解析:
- 提取当前通话时段
[A2,B2]内的所有关键事件点(所有通话的开始/结束时间) - 对每个事件点,统计此时正在进行的通话数(开始时间≤该点,结束时间>该点)
- 取所有统计值的最大值,即为当前时段的最大并发数
方案2:适用于旧版Excel(无动态数组支持)
需按Ctrl+Shift+Enter输入数组公式:
=MAX(COUNTIFS($A$2:$A$8,"<="&IF(($A$2:$B$8>=A2)*($A$2:$B$8<=B2),$A$2:$B$8),$B$2:$B$8,">"&IF(($A$2:$B$8>=A2)*($A$2:$B$8<=B2),$A$2:$B$8)))
逻辑解析:
- 通过数组判断筛选出当前时段内的所有事件点
- 对每个点统计并发数后取最大值,实现和方案1相同的效果,适配旧版Excel的数组计算规则
内容的提问来源于stack exchange,提问作者dan
相关产品推荐
相关产品推荐

