应使用trimmean函数,公式为=trimmean(a1:a10,2/count(a1:a10)),自动剔除一个最高分和一个最低分后求均值;若需兼容旧版或防重复极值,可用sum-max-min组合或large+row+indirect数组公式。

Excel中需要计算一组分数的平均值,但必须剔除一个最高分和一个最低分后再求均值,这种场景常见于体育评分、评委打分、内部考核等对异常值敏感的业务中,直接用AVERAGE会拉高或压低结果,导致失真。
用TRIMMEAN函数一步到位
这是最简洁、最可靠的方案,专为“修剪平均”设计,自动从两端各剔除指定比例的数据点。
在空白单元格输入公式:=TRIMMEAN(A1:A10,2/COUNT(A1:A10)),按Enter确认。
公式中2/COUNT(A1:A10)表示总共剔除2个极值(1个最大+1个最小),除以总个数即得截尾比例;Excel会自动向上取整处理边界情况,比如9个数时2/9≈0.222,实际各剔除1个,共2个,完全符合需求。
⚠️注意:若数据区域含空单元格、文本或错误值,TRIMMEAN会直接报错#VALUE!,务必先清理或用IFERROR包裹。
用SUM-MAX-MIN组合公式手动控制
逻辑直白,兼容所有Excel版本,适合需要全程可追溯、审计要求高的场景。
方法一:基础写法
在空白单元格输入:=(SUM(A1:A10)-MAX(A1:A10)-MIN(A1:A10))/(COUNT(A1:A10)-2)。
这一步不依赖数组输入,回车即出结果。它先算总分,再减去最高分和最低分,最后除以剩余个数——前提是数据区域确实有且仅有1个最高值和1个最低值;如果存在多个相同最大值(如两个100分),该公式只减1个,可能多留一个异常高分。
本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd、xlwt和xlutils模块。另外还演示了如何通过Tcl tcom包对excel操作。感兴趣的朋友可以过来看看
方法二:防重复极值加强版
若A列存在并列最高或最低分,又必须严格只剔除“一个”最大和“一个”最小数值(无论是否重复),则改用:=AVERAGE(LARGE(A1:A10,ROW(INDIRECT("2:"&COUNT(A1:A10)-1))))。
这个公式需按Ctrl+Shift+Enter三键确认(Excel 365/2021及以上可直接回车);其中ROW(INDIRECT("2:"&COUNT(...)-1))生成从第2大到倒数第2大的序号序列,LARGE据此提取对应值,彻底绕过重复值干扰。
用FILTER+SORT函数(仅限Excel 365 / 2021+)
这是现代Excel用户的清爽选择,无需记忆复杂嵌套,公式结构清晰,且天然支持动态数组溢出。
第一步:升序排列原始数据 → SORT(A1:A10)
第二步:生成行号序列并排除首尾 → SEQUENCE(ROWS(A1:A10))>1)*(SEQUENCE(ROWS(A1:A10))
第三步:用FILTER筛选中间部分 → FILTER(SORT(A1:A10),(SEQUENCE(ROWS(A1:A10))>1)*(SEQUENCE(ROWS(A1:A10))
第四步:套上AVERAGE → =AVERAGE(FILTER(SORT(A1:A10),(SEQUENCE(ROWS(A1:A10))>1)*(SEQUENCE(ROWS(A1:A10))
这个公式一次性完成排序→标号→过滤→求均值,中间不依赖辅助列,也不怕空值(FILTER默认忽略空值),但【必须确保A1:A10区域不含文本或错误值,否则SORT会报错】。
用辅助列标记再条件求均值
适合需要人工复核剔除过程、或团队协作中要求步骤透明的场合。
① 在B1输入:=IF(OR(A1=MAX($A$1:$A$10),A1=MIN($A$1:$A$10)),0,1),向下填充至B10。
② 在任意空白单元格输入:=AVERAGEIF(B1:B10,1,A1:A10)。
B列中“1”代表保留项,“0”代表被剔除项;AVERAGEIF只对B列为1的对应A列数值求平均。如果最大值或最小值出现多次,此法会全部标记为0——也就是说,它剔除的是“所有最大值和所有最小值”,不是“一个最高+一个最低”。若原始数据明确要求“仅各剔一个”,此法不适用。










