如何在Excel中去掉最低分并获取数值的平均值或总和?
当您在Excel中处理成绩或分数列表时,您可能需要通过排除学生的最低分,甚至最低的n个分数,来计算学生的最终成绩,然后再对剩余的值进行平均或求和。这是教育环境中的一项常见需求,允许学生去掉最差的成绩以考虑异常情况或确保公平性。手动执行此操作可能会很繁琐,特别是对于大型数据集或频繁的计算调整。幸运的是,Excel提供了几种灵活的方法来实现这一点,从简单的公式到使用VBA进行批量操作的自动化方法应有尽有。
VBA代码 - 去掉最低分或最低的n个成绩并自动计算总和或平均值
使用公式去掉最低分并获取平均值或总和
如果您想从一行数据或列表中排除最低分或最低的n个值,然后进行计算(例如对剩余数字求平均值或求和),Excel内置公式提供了一种实用的方法。这些公式解决方案特别适用于需要处理适量行数的情况,或者您更喜欢基于公式的透明且易于调整的方法。
下面,您将找到关于求和和平均两种方法的详细说明,包括详细的步骤指导和灵活应用的实用技巧。
对数字求和但去掉最低分或最低的N个数字:
要计算每行或每个列表的总和同时忽略最低值,请使用以下方法:
1. 选择一个空白单元格,您希望第一行的总和结果显示在此处(例如,如果您的数据在B2:H2中,则可以选择I2单元格),然后输入以下公式:
=SUM(B2:H2)-SMALL(B2:H2,1)
2. 按Enter键确认,然后拖动填充柄向下应用该公式到其他行。这将对每行中的所有数字求和,排除最低值。
以下是参考截图:
注意事项和提示:
- 要排除最低的两个、三个或更多值,您可以通过减去额外的SMALL结果来扩展公式。例如:
=SUM(B2:H2)-SMALL(B2:H2,1)-SMALL(B2:H2,2)
=SUM(B2:H2)-SMALL(B2:H2,1)-SMALL(B2:H2,2)-SMALL(B2:H2,3)
=SUM(B2:H2)-SMALL(B2:H2,1)-SMALL(B2:H2,2)-SMALL(B2:H2,3)-...-SMALL(B2:H2,n)
- 在这些公式中,B2:H2是您要求和的区域,数字1、2、3等指定要排除的n个最小数字。根据您希望去掉的最低成绩数量调整n。
- 请注意不要将n设置为大于或等于值的总数;否则,您会遇到错误或不想要的结果。
- 这些公式独立作用于每一行。如果您的数据跨越列而不是行,请相应调整区域。
- 如果您的数据集中包含最低数字的重复项,SMALL(B2:H2,1)每次只会删除一个出现的数字。要去掉多个出现的数字,请按照上述方式重复SMALL项并增加k值。
对数字求平均值但去掉最低分或最低的N个数字:
要在忽略最低分或最低的n个值的情况下计算平均值,您可以使用以下公式。这个计算在评分方案中尤其有用,在这种方案中异常低的表现不会被计入平均值。
1. 选择一个单元格用于显示平均值结果(例如,如果您的分数在B2:H2中,则选择J2),然后输入公式:
=(SUM(B2:H2)-SMALL(B2:H2,1))/(COUNT(B2:H2)-1)
2. 按下Enter键后,根据需要向下拖动公式以对其他行求平均值,每次都忽略该行范围内的最低分。
注意事项和重要指导:
- 要在去掉不止一个最低分的情况下求平均值,请通过减去额外的SMALL项并相应减少除数来扩展公式:
=(SUM(B2:H2)-SMALL(B2:H2,1)-SMALL(B2:H2,2))/(COUNT(B2:H2)-2)
=(SUM(B2:H2)-SMALL(B2:H2,1)-SMALL(B2:H2,2)-SMALL(B2:H2,3))/(COUNT(B2:H2)-3)
=(SUM(B2:H2)-SMALL(B2:H2,1)-SMALL(B2:H2,2)-SMALL(B2:H2,3)-...-SMALL(B2:H2,n))/(COUNT(B2:H2)-n)
- 再次提醒,B2:H2是要平均的区域,n表示将不计入计算的最低值的数量。
- 如果您试图减去的数字多于范围内的数字,公式将返回#NUM!错误,表明没有足够的值进行平均。始终确保n小于数字的计数。
- 建议在排除最低值之前仔细检查它们是否不是关键或必需的计算内容,因为这可能会影响最终结果。
- 对于非常大的数据集或动态去掉最低的n个值,可以考虑使用自动化或数组解决方案。

使用 Kutools AI 解锁 Excel 魔法
- 智能执行:执行单元格操作、分析数据和创建图表——所有这些都由简单命令驱动。
- 自定义公式:生成量身定制的公式,优化您的工作流程。
- VBA 编码:轻松编写和实现 VBA 代码。
- 公式解释:轻松理解复杂公式。
- 文本翻译:打破电子表格中的语言障碍。
VBA代码 - 去掉最低分或最低的n个成绩并自动计算总和或平均值
对于涉及大或经常变化的数据集的情况,或者您需要自动化去掉最低的n个成绩并在许多行中计算总和或平均值的情况,使用VBA可以大大简化重复工作。使用VBA宏,您可以指定数据范围和要排除的最低成绩数量,代码将高效地一步处理所有选定行。
这种自动方法特别适用于管理多个班级表格的教师,或者任何希望尽量减少手动公式输入和潜在错误的人。以下解决方案允许您轻松调整要排除的数量和目标函数(总和或平均值)。
在开始之前,请保存您的工作簿,因为运行宏后无法直接撤销。
1. 单击“开发工具”>“Visual Basic”。在Microsoft Visual Basic for Applications窗口中,单击“插入”>“模块”,然后输入以下代码:
Sub DropLowestNandCalculate()
Dim WorkRng As Range
Dim OutputRng As Range
Dim n As Integer
Dim FuncType As String
Dim i As Integer, j As Integer, k As Integer
Dim Arr() As Variant, TempArr() As Double
Dim RowSum As Double
Dim RowCount As Integer
Dim MinIdx() As Integer
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Select the score range (rows to process):", xTitleId, WorkRng.Address, Type:=8)
Set OutputRng = Application.InputBox("Select output cells (top-left for results):", xTitleId, WorkRng.Offset(0, WorkRng.Columns.Count).Cells(1, 1).Address, Type:=8)
n = Application.InputBox("Number of lowest grades to drop (n):", xTitleId, "1", Type:=1)
FuncType = Application.InputBox("Type 'SUM' to calculate total or 'AVG' to calculate average (not case sensitive):", xTitleId, "AVG", Type:=2)
For i = 1 To WorkRng.Rows.Count
Arr = Application.WorksheetFunction.Transpose(Application.WorksheetFunction.Transpose(WorkRng.Rows(i).Value))
RowCount = UBound(Arr)
ReDim TempArr(1 To RowCount)
For j = 1 To RowCount
TempArr(j) = Arr(j)
Next j
' Mark n lowest values as used by setting to very high number
For k = 1 To n
Dim MinVal As Double, MinPos As Integer
MinVal = Application.WorksheetFunction.Min(TempArr)
For j = 1 To RowCount
If TempArr(j) = MinVal Then
TempArr(j) = 1E+308
Exit For
End If
Next j
Next k
RowSum = 0
Dim ValidCount As Integer
ValidCount = 0
For j = 1 To RowCount
If TempArr(j) <> 1E+308 Then
RowSum = RowSum + Arr(j)
ValidCount = ValidCount + 1
End If
Next j
If UCase(FuncType) = "AVG" Then
If ValidCount = 0 Then
OutputRng.Cells(i, 1).Value = "N/A"
Else
OutputRng.Cells(i, 1).Value = RowSum / ValidCount
End If
Else
OutputRng.Cells(i, 1).Value = RowSum
End If
Next i
End Sub
2. 添加代码后,单击 按钮或按 F5 执行。
3. 按照出现的提示进行操作:
- 选择您希望处理的分数范围(确保每个学生的分数都在一行中)
- 选择输出范围的左上角单元格(输出将根据行数向下填充)。
- 输入要排除的最低分数的数量(例如,输入1以仅排除每行中的最低分)。
- 输入SUM以获取总和(不包括排除的分数)或AVG以获取重新计算的平均值(不包括排除的分数)。
该宏处理指定分数区域中的每一行,并将所选的总和或平均值放入您的输出范围中。如果某行中的所有分数都被排除,则结果标记为N/A以避免错误。
- 请确保输入范围与您的数据结构匹配(每个学生的分数占一行)。
- 非数字单元格(例如空或文本)默认会被忽略。
- 此VBA代码极大地加速了整个班级的重复评分计算,并支持灵活调整要排除的成绩数量。
- 如果您经常执行此类操作,您可能希望将此宏分配给工作表上的一个按钮以实现更快的访问。
如果您遇到诸如输出错误或错误之类的问题,请仔细检查范围是否准确指定,并确保“n”不大于或等于每行可用成绩的总数。
对于类似的自动化需求,例如同时去掉最高分和最低分或处理列而不是行,可以对VBA代码逻辑进行小幅调整。
最佳Office办公效率工具
🤖 | Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数…… |
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入…… | |
高级LOOKUP:多条件VLookup|多值VLookup|多表查找|模糊查找…… | |
高级下拉列表:快速创建下拉列表 |依赖下拉列表 | 多选下拉列表…… | |
列管理器: 添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列…… | |
特色功能:网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)…… | |
15大工具集:12项 文本工具(添加文本、删除特定字符等)|50+种 图表 类型(甘特图等)|40+实用 公式(基于生日计算年龄等)|19项 插入工具(插入二维码、从路径插入图片等)|12项 转换工具(小写金额转大写、汇率转换等)|7项 合并与分割工具(高级合并行、分割单元格等)| …… |
通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……
Office Tab为Office带来多标签界面,让您的工作更加轻松
- 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读。
- 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
- 可提升50%的工作效率,每天为您减少数百次鼠标点击!
所有Kutools加载项,一键安装
Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。





- 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
- 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
- 协同更高效——提升Office应用间的整体工作效率
- 30天全功能试用——无需注册,无需信用卡
- 超高性价比——比单独购买更实惠