Excel按行求B-F列众数并按双规则处理平局的公式需求
Excel 计算带优先级规则的众数方案
嘿,针对你需要计算每行B-F列众数,且平局时按规则取值的需求,我整理了两个实用公式,分别适配不同版本的Excel:
方案1:适配Excel 365/2021(支持动态数组)
这个公式用LET函数简化了逻辑,可读性和维护性都更好:
=LET( data, B2:F2, unique_vals, UNIQUE(data), counts, FREQUENCY(data, unique_vals), max_count, MAX(counts), top_candidates, FILTER(unique_vals, counts=max_count), IF(ISNUMBER(XMATCH(4, top_candidates)), 4, G2) )
公式拆解:
data, B2:F2:把当前行的目标区域定义为变量data,避免重复引用unique_vals, UNIQUE(data):提取B-F列的所有唯一值counts, FREQUENCY(data, unique_vals):计算每个唯一值的出现次数max_count, MAX(counts):找出出现次数的最大值top_candidates, FILTER(unique_vals, counts=max_count):筛选出所有出现次数等于最大值的候选值- 最后判断候选值里是否包含4:如果是就返回4,否则取G列的值
方案2:适配旧版Excel(不支持动态数组)
如果你的Excel版本比较老,用这个数组公式(输入后按Ctrl+Shift+Enter确认):
=IF(COUNTIF(B2:F2,4)=MAX(COUNTIF(B2:F2,B2:F2)),4,IF(SUM(--(COUNTIF(B2:F2,B2:F2)=MAX(COUNTIF(B2:F2,B2:F2))))>1,G2,MODE(B2:F2)))
公式拆解:
- 首先检查数字4的出现次数是否等于最大出现次数:如果是,直接返回4
- 如果不是,统计有多少个值的出现次数等于最大值:
- 若数量>1(说明平局且4没参与),返回G列的值
- 若数量=1,返回常规的众数结果
注意事项:
- 如果B-F列存在空白单元格,你可以在公式里加入
B2:F2<>""的条件来排除空白值的干扰,比如把方案1里的data改成FILTER(B2:F2,B2:F2<>"")
内容的提问来源于stack exchange,提问作者Stenner93
相关产品推荐
相关产品推荐

