Excel多条件统计优化需求:按月份星期统计指定列特定字符次数
优化Excel统计公式:按月份、星期几、B列含特定字符计数
问题分析
现有公式未纳入B列含特定字符的条件,且因引用整列导致计算效率极低。需要实现:统计指定月份中,对应星期几且B列包含“π”的记录次数。
修正后的高效公式
基础优化版(兼容所有Excel版本)
用实际数据范围替代整列引用,加入B列条件,同时修正月末日期判断:
=SUMPRODUCT( --(Ωράριο!$A$2:$A$10000 >= DATE(LEFT($A2,4), RIGHT($A2,2), 1)), --(Ωράριο!$A$2:$A$10000 <= EOMONTH(DATE(LEFT($A2,4), RIGHT($A2,2), 1), 0)), --(TEXT(Ωράριο!$A$2:$A$10000, "ddd") = B$1), --(ISNUMBER(SEARCH("π", Ωράριο!$B$2:$B$10000))) )
- 关键优化点:将
Ωράριο.$A:$A改为实际数据范围(如$A$2:$A$10000),大幅减少计算行数 - B列条件:
ISNUMBER(SEARCH("π", ...))判断B列是否包含“π”,需区分大小写则替换为FIND - 月末修正:用
EOMONTH自动获取当月最后一天,避免DATE(...,31)在小月(如2月、4月)的错误
进阶高效版(Excel 365/2021)
用LET函数缓存中间结果,减少重复计算,进一步提升效率:
=LET( 起始日期, DATE(LEFT($A2,4), RIGHT($A2,2), 1), 结束日期, EOMONTH(起始日期, 0), 日期列, Ωράριο!$A$2:$A$10000, 星期列, TEXT(日期列, "ddd"), B列内容, Ωράριο!$B$2:$B$10000, SUMPRODUCT( --(日期列 >= 起始日期), --(日期列 <= 结束日期), --(星期列 = B$1), --(ISNUMBER(SEARCH("π", B列内容))) ) )
效率提升核心
- 避免整列引用:仅引用包含数据的行,而非整个A/B列
- 减少重复计算:用
LET复用中间结果,避免多次计算同一日期转换 - 简化逻辑:用
EOMONTH替代手动计算月末,减少出错概率
内容的提问来源于stack exchange,提问作者SkarmoutsosV
相关产品推荐
相关产品推荐

