SUMPRODUCT统计胜负平记录:空行计数与筛选适配问题求助
Excel 胜/平/负统计公式优化(解决空行误判+筛选动态更新)
我来帮你搞定这两个Excel公式的问题,直接上解决方案和细节解释:
核心问题拆解
你当前的公式遇到两个典型问题:
- 空单元格会被判定为
D=E,导致大量空行被误算成平局 SUMPRODUCT无法自动识别筛选后的可见行,统计结果不会随筛选动态变化
分步解决方案
1. 先解决空行误判问题
要排除空行,我们需要在胜负平的判断逻辑里,额外加上D列和E列都不为空的条件。用--(D12:D200<>"")和--(E12:E200<>"")就能过滤掉任意一列为空的行。
2. 适配筛选动态更新
要让统计结果随筛选变化,我们需要用SUBTOTAL函数配合OFFSET来生成「可见行标记数组」—— 可见行对应值为1,隐藏行对应值为0,以此来过滤掉被筛选隐藏的行。
最终整合公式
直接用这个公式就能同时解决两个问题:
=SUMPRODUCT(SUBTOTAL(103,OFFSET(D12,ROW(D12:D200)-ROW(D12),0,1,1)),--(D12:D200>E12:E200),--(D12:D200<>""),--(E12:E200<>""))&" / "&SUMPRODUCT(SUBTOTAL(103,OFFSET(D12,ROW(D12:D200)-ROW(D12),0,1,1)),--(D12:D200=E12:E200),--(D12:D200<>""),--(E12:E200<>""))&" / "&SUMPRODUCT(SUBTOTAL(103,OFFSET(D12,ROW(D12:D200)-ROW(D12),0,1,1)),--(D12:D200<E12:E200),--(D12:D200<>""),--(E12:E200<>""))
公式细节解释
SUBTOTAL(103,OFFSET(...)):生成可见行判断数组,103参数表示忽略隐藏行的计数,只有可见行才会返回1--(D12:D200<>"")和--(E12:E200<>""):双重过滤空行,确保只有D、E列都有数据的行才会被统计- 三个
SUMPRODUCT分别计算胜、平、负的可见有效行数,最后用&" / "&拼接成你需要的格式
简化版(适用于Excel 365/2021及以上)
如果你用的是支持动态数组的Excel版本,用LET函数可以让公式逻辑更清晰,维护起来更方便:
=LET( filtered_rows, FILTER(D12:E200, (D12:D200<>"")*(E12:E200<>"")*(SUBTOTAL(103,OFFSET(D12,ROW(D12:D200)-ROW(D12),0,1,1))=1)), win_count, COUNT(IF(INDEX(filtered_rows,,1)>INDEX(filtered_rows,,2),1)), draw_count, COUNT(IF(INDEX(filtered_rows,,1)=INDEX(filtered_rows,,2),1)), loss_count, COUNT(IF(INDEX(filtered_rows,,1)<INDEX(filtered_rows,,2),1)), win_count&" / "&draw_count&" / "&loss_count )
内容的提问来源于stack exchange,提问作者Teague
相关产品推荐
相关产品推荐

