如何在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)每次只會去掉一個出現次數。要去除多次出現,按上面展示的方式重複帶有遞增k值的SMALL術語。
平均數字但去掉最低分或最低的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 項插入工具(插入QR码、根據路徑插入圖片等)|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 天全功能試用 — 無需註冊、無需信用卡
- 最超值 — 一次購買,節省單獨外掛費用