Excelで最低の成績を除外して平均または合計を取得するにはどうすればよいですか?
Excelで成績やスコアのリストを扱っている場合、生徒の最終成績を計算するために最低点を除外したり、最低のn個のスコアを除いた後に残りの値の平均または合計を計算する必要があるかもしれません。これは教育現場での一般的な要件であり、異常値を考慮したり公平性を保つために、生徒が最悪のパフォーマンスを削除することが許可される場合があります。この操作を手動でおこなうのは特に大規模なデータセットや頻繁な計算調整がある場合には面倒です。幸い、Excelはシンプルな数式からVBAを使用したバッチ処理まで、いくつかの柔軟な方法を提供しています。
VBAコード - 最低または最低n個の成績を除外し、合計または平均を自動的に計算する
数式を使用して最低の成績を除外し、平均または合計を取得する
データ行またはリストから最低または最低n個の値を除外し、その後に残りの数字の平均や合計などの計算をおこないたい場合、Excelの組み込み数式は実用的なアプローチを提供します。これらの数式ソリューションは、処理する行の数が少ないか中程度である場合や、透明性と調整の容易さのために数式ベースのアプローチを好む場合に特に便利です。
以下では、合計と平均の両方の方法について別々に説明し、詳細な手順と柔軟な応用のための実践的なヒントを提供します。
最低または最低N個の数字を除外して数字を合計する:
各行またはリストの最低値を除外しつつ合計を計算するには、次の方法を使用してください:
1. 合計結果を表示したい空白のセルを選択します(たとえば、データがB2:H2にある場合、I2セルなど)、次に以下の数式を入力します:
=SUM(B2:H2)-SMALL(B2:H2,1)
2. Enterキーを押して確認し、他の行にも数式を適用するためにフィルハンドルを下にドラッグします。これにより、各行のすべての数字が最低値を除外して合計されます。
参考のためのスクリーンショットは次の通りです:
注意とヒント:
- 最低2つ、3つ、またはそれ以上の値を除外するには、追加の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)は参照ごとに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」としてマークされます。
- 入力範囲がデータ構造(各生徒のスコアが1行ずつ)と一致していることを確認してください。
- 非数値のセル(例:空白またはテキスト)はデフォルトで無視されます。
- このVBAコードは、全クラスに対する反復的な成績計算を大幅に加速し、除外する成績の数を柔軟に調整できます。
- このような操作を頻繁におこなう場合、さらに迅速にアクセスできるように、このマクロをワークシート上のボタンに割り当てるのも良いでしょう。
出力が正しくない、またはエラーが発生する問題に遭遇した場合、範囲が正確に指定されていること、「n」が各行の利用可能な成績の総数以上になっていないことを再度確認してください。
最高得点と最低得点の両方を除外したり、行ではなく列を処理するといった類似の自動化要件については、VBAコードロジックに若干の調整を加えることができます。
最高のオフィス業務効率化ツール
🤖 | Kutools AI Aide:データ分析を革新します。主な機能:Intelligent Execution|コード生成|カスタム数式の作成|データの分析とグラフの生成|Kutools Functionsの呼び出し…… |
人気の機能:重複の検索・ハイライト・重複をマーキング|空白行を削除|データを失わずに列またはセルを統合|丸める…… | |
スーパー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が含まれます
- 1つのインストーラー・1つのライセンス —— 数分でセットアップ完了(MSI対応)
- 一括管理でより効率的 —— Officeアプリ間で快適な生産性を発揮
- 30日間フル機能お試し —— 登録やクレジットカード不要
- コストパフォーマンス最適 —— 個別購入よりお得