概要
「下位n件の合計」を求めたいときは、範囲から最小値側のn個を取り出して合計します。Excelでは SMALL 関数で順位付きの小さい値を抽出し、それを SUM で合計するのが定番です。Microsoft 365なら動的配列を使って一気に合計でき、従来版でも複数のSMALLを足し合わせることで同じ結果が得られます。
基本の使い方
書式
=SUM(SMALL(範囲, SEQUENCE(n)))
SMALL(範囲, k)は範囲の中で「小さい順にk番目の値」を返します。SEQUENCE(n)は1からnまでの数列を返し、複数順位を同時に指定できます(Microsoft 365)。
最小例(従来版Excel)
下位3件の合計:
=SMALL(B2:B100,1) + SMALL(B2:B100,2) + SMALL(B2:B100,3)
動的配列がない環境でも確実に動作します。
具体例
売上の下位3件合計
=SUM(SMALL(B2:B200, SEQUENCE(3)))
範囲B2:B200から最小値、2番目に小さい値、3番目に小さい値を取り出し合計します。
H1セルで件数を指定して柔軟に
=SUM(SMALL(B2:B200, SEQUENCE($H$1)))
H1に「5」と入力すれば下位5件の合計になります。
カテゴリ別の下位n件合計(条件付き)
カテゴリがA列、金額がB列、現在行A2のカテゴリに属する下位3件の合計:
=SUM(SMALL(IF($A$2:$A$200=A2, $B$2:$B$200), SEQUENCE(3)))
古いExcelでは配列数式としてCtrl+Shift+Enterで確定します。
応用テンプレート
下位n件の値を一覧表示
=SMALL(B2:B200, SEQUENCE(3))
最小値から順に3件を縦方向に表示できます。
下位n件の合計と平均を同時に出す
合計:
=SUM(SMALL(B2:B200, SEQUENCE(3)))
平均:
=AVERAGE(SMALL(B2:B200, SEQUENCE(3)))
下位n件を条件付きで抽出して合計
日付A列、金額B列、A2と同じ月の下位3件:
=SUM(SMALL(IF(TEXT($A$2:$A$200,"yyyy-mm")=TEXT(A2,"yyyy-mm"), $B$2:$B$200), SEQUENCE(3)))
よくあるつまずきと対策
重複値がある場合
SMALLは値ベースで抽出するため、同じ値が複数あるとその値が複数回カウントされます。意図と異なる場合はUNIQUEで一意化してから使う方法もあります。
=SUM(SMALL(UNIQUE(B2:B200), SEQUENCE(3)))
範囲にエラー値が含まれる
エラーがあるとSMALLは計算できません。IFERRORで保護するか、数値のみを抽出する条件を加えます。
=SUM(SMALL(IF(ISNUMBER($B$2:$B$200), $B$2:$B$200), SEQUENCE(3)))
nが範囲の件数を超える
存在しない順位を指定するとエラーになります。MINで上限を件数に合わせると安全です。
=SUM(SMALL(B2:B200, SEQUENCE(MIN($H$1, COUNT(B2:B200)))))
例題
問題1: 列B(B2:B200)の下位3件の合計をC2に表示
解答例:
=SUM(SMALL(B2:B200, SEQUENCE(3)))
問題2: H1で指定したn件の下位合計をC2に表示
解答例:
=SUM(SMALL(B2:B200, SEQUENCE($H$1)))
問題3: カテゴリA列、金額B列。現在行(A2)のカテゴリに属する下位3件の合計をC2に表示
解答例:
=SUM(SMALL(IF($A$2:$A$200=A2, $B$2:$B$200), SEQUENCE(3)))
問題4: 日付A列、金額B列。A2と同じ月の下位3件合計をC2に表示
解答例:
=SUM(SMALL(IF(TEXT($A$2:$A$200,"yyyy-mm")=TEXT(A2,"yyyy-mm"), $B$2:$B$200), SEQUENCE(3)))
問題5: 下位3値の一覧(縦)とその合計をD列に表示(Microsoft 365)
一覧:
=SMALL(B2:B200, SEQUENCE(3))
合計:
=SUM(SMALL(B2:B200, SEQUENCE(3)))
まとめ
SMALL+SUM は「下位n件の合計」を最短で計算できる定番の組み合わせです。Microsoft 365ならSEQUENCEで一括抽出、従来版なら複数のSMALLを足し合わせる形で対応します。条件付きの下位抽出、重複値の扱い、nの安全化、エラー除去を押さえれば、実務でも堅牢に運用できます。
