如何用Excel公式按B列分组标记C列最大值(T/TE)?
Excel按B列分组标记C列最大值的公式实现
需求说明
基于A1:C15的表格数据,在D列按B列分组执行以下标记规则:
- 若当前行C值为分组内严格唯一最大值,标记为
T - 若当前行C值为分组内最大值但存在重复的最大值,标记为
TE - 非分组最大值的单元格留空
原始数据
1 1 36 1 2 24 1 3 18 2 1 20 2 2 20 2 3 20 3 1 36 3 2 18 3 3 17 4 1 15 4 2 15 4 3 21
公式实现
方案1:适用于Excel 365/2021(支持动态数组)
在D1单元格输入以下公式,自动填充整个D列:
=BYROW(C1:C15,LAMBDA(x,LET( group_max, MAXIFS(C:C, B:B, B1), max_count, COUNTIFS(B:B, B1, C:C, group_max), IF(x=group_max, IF(max_count>1, "TE", "T"), "") )))
- 逻辑说明:用
BYROW遍历每行C值,通过LET简化变量定义,先计算当前B组的最大值及最大值出现次数,再根据规则返回对应标记。
方案2:适用于旧版Excel(不支持动态数组)
在D1单元格输入以下公式,手动下拉填充至D15:
=IF(C1=MAXIFS($C$1:$C$15,$B$1:$B$15,B1),IF(COUNTIFS($B$1:$B$15,B1,$C$1:$C$15,MAXIFS($C$1:$C$15,$B$1:$B$15,B1))>1,"TE","T"),"")
- 逻辑说明:先判断当前C值是否为B组最大值,再统计该最大值在组内的出现次数,根据次数判断返回
TE或T,非最大值则留空。
验证结果
最终D列输出符合预期:
1 1 36 TE 1 2 24 T 1 3 18 2 1 20 2 2 20 2 3 20 3 1 36 TE 3 2 18 3 3 17 4 1 15 4 2 15 4 3 21 T
内容的提问来源于stack exchange,提问作者ImFabien75
相关产品推荐
相关产品推荐

