如何在Excel中按人员及历史记录条件计算分数列的最小/最大值?
Excel按人员计算历史分数极值的解决方案
为什么你的公式会报错?
你用的= MIN(IF(AND(C:C=$C2, A:A<$A2),D:D))里,AND()函数不支持数组运算——它没法同时对整列的每个单元格逐一判断两个条件,这才导致报错。得用**逻辑乘(*)**替代AND(),才能实现多条件的数组筛选。
可自动填充的有效公式
假设你的数据表头在第1行:A列=DATE、C列=NAME、D列=SCORE,公式从第2行开始输入:
1. 历史最小值(MIN列)
=IF(COUNTIF($C$2:$C2,$C2)=1,NA(),MIN(IF(($C:$C=$C2)*($A:$A<$A2),$D:$D)))
- 旧版Excel(2019及更早)输完公式后,必须按 Ctrl+Shift+Enter 触发数组计算;新版Excel(365/2021)直接回车就行,会自动识别动态数组。
- 逻辑说明:先用
COUNTIF($C$2:$C2,$C2)判断当前行是不是该人员的第一条记录,是就返回NA();否则用($C:$C=$C2)*($A:$A<$A2)筛选出同姓名且日期更早的所有记录,再取对应分数的最小值。
2. 历史最大值(MAX列)
把上面公式里的MIN换成MAX即可:
=IF(COUNTIF($C$2:$C2,$C2)=1,NA(),MAX(IF(($C:$C=$C2)*($A:$A<$A2),$D:$D)))
实用优化建议
- 别用整列引用(比如
C:C),换成实际的数据范围(比如数据到第13行就写$C$2:$C$13),能大幅提升计算速度,避免Excel白忙活遍历空单元格。 - 确保
DATE列是标准日期格式,不然日期比较会出错。
内容的提问来源于stack exchange,提问作者NEWBIE
相关产品推荐
相关产品推荐

