Excel関数 逆引き集 | 上位n件の合計 → LARGE+SUM

Excel
スポンサーリンク

概要

上位n件の合計は「範囲から上位n個を取り出して合計する」考え方で求めます。定番はLARGEで上位値を抽出し、それをSUMで合計する方法です。Microsoft 365なら動的配列で一気に合計でき、従来版でも「複数のLARGEを足す」ことで同じ結果が得られます。


基本の使い方

書式の基本形(n件をセルで指定)

=SUM(LARGE(範囲, SEQUENCE(n)))

H1にn(例: 3)を入れている場合:

=SUM(LARGE(B2:B100, SEQUENCE($H$1)))

範囲から「1位、2位…n位」を同時に取り出し、SUMで合計します(Microsoft 365の動的配列機能)。

従来版Excelの最小例(nを固定)

上位3件の合計:

=SUM(LARGE(B2:B100,1), LARGE(B2:B100,2), LARGE(B2:B100,3))

動的配列がない環境でも確実に動作します。nを増やす場合は引数を追加します。


具体例

売上の上位3件合計

=SUM(LARGE(B2:B200, SEQUENCE(3)))

上位3件の売上を一括で合計します。3をセル参照にすると柔軟に変更できます。

=SUM(LARGE(B2:B200, SEQUENCE($H$1)))

カテゴリ別の上位n件合計(条件付き)

カテゴリがA列、金額がB列、現在行A2のカテゴリに属する上位3件の合計:

=SUM(LARGE(IF($A$2:$A$200=A2, $B$2:$B$200), SEQUENCE(3)))

配列式が必要な古い環境ではCtrl+Shift+Enterで確定します。Microsoft 365なら通常の確定でOK。

月内の上位n件合計(期間条件)

日付A列、金額B列、A2と同じ月の上位3件:

=SUM(LARGE(IF(TEXT($A$2:$A$200,"yyyy-mm")=TEXT(A2,"yyyy-mm"), $B$2:$B$200), SEQUENCE(3)))

対象月だけに絞って上位合計を算出します。


応用テンプレート

nをセルで可変に(業務運用向け)

H1にn件数:

=SUM(LARGE(B2:B200, SEQUENCE($H$1)))

上位n件の値を並べて表示しつつ合計も出す

上位値の一覧(縦方向に出力):

=LARGE(B2:B200, SEQUENCE(3))

合計:

=SUM(LARGE(B2:B200, SEQUENCE(3)))

別列の情報も取りたい(上位n件の商品名一覧)

金額がB列、商品名がA列、上位n件のインデックスを使って抽出(Microsoft 365):

=LET(
  topIdx, XMATCH(LARGE(B2:B200, SEQUENCE($H$1)), B2:B200, 0),
  INDEX(A2:A200, topIdx)
)

重複値がある場合は、XMATCHは最初の一致に寄るため、重複の商品名が混在します。重複処理が必要なら順位と行番号の組み合わせなどの工夫を検討します。

下位n件(最小値側)の合計

=SUM(SMALL(B2:B200, SEQUENCE(3)))

最小側のn件合計はSMALLに置き換えるだけです。


よくあるつまずきと対策

重複値(同率)がある場合の解釈

LARGEは値ベースで抽出します。同じ値が複数あると、その値が複数回カウントされます。これが意図と異なる場合は、行制約(カテゴリや期間)を加えるか、重複除外のロジック(UNIQUEで値を一意化→上位抽出)を検討します。

=SUM(LARGE(UNIQUE(B2:B200), SEQUENCE(3)))

一意化した上位3値の合計になります。

エラー値や非数値が混在

範囲内にエラーがあるとLARGE/SMALLはエラーになります。計算用のクリーン列を用意してIFERRORで保護するか、条件で数値のみを通すようにします。

=SUM(LARGE(IF(ISNUMBER($B$2:$B$200), $B$2:$B$200), SEQUENCE(3)))

nが範囲内の件数を超える

LARGEは「存在しない順位」を指定するとエラーになります。IFでnを安全な範囲に丸めるか、MINで上限を件数に合わせるのが実務的です。

=SUM(LARGE(B2:B200, SEQUENCE(MIN($H$1, COUNT(B2:B200)))))

並べ替えと計算の関係

上位抽出は範囲の値に依存し、並べ替えの有無に影響されません。並べ替えが必要な見せ方は、SORTで降順に並べてからTAKEでn件、最後にSUMでも同じ結果が得られます(表示が必要なレポート向け)。

=SUM(TAKE(SORT(B2:B200,,-1), $H$1))

例題

問題1: 列B(B2:B200)の上位3件の合計をC2に表示

解答例:

=SUM(LARGE(B2:B200, SEQUENCE(3)))

問題2: H1で指定したn件の上位合計をC2に表示

解答例:

=SUM(LARGE(B2:B200, SEQUENCE($H$1)))

問題3: カテゴリA列、金額B列。現在行(A2)のカテゴリに属する上位3件の合計をC2に表示

解答例:

=SUM(LARGE(IF($A$2:$A$200=A2, $B$2:$B$200), SEQUENCE(3)))

問題4: 日付A列、金額B列。A2と同じ月の上位3件合計をC2に表示

解答例:

=SUM(LARGE(IF(TEXT($A$2:$A$200,"yyyy-mm")=TEXT(A2,"yyyy-mm"), $B$2:$B$200), SEQUENCE(3)))

問題5: 上位3値の一覧(縦)とその合計をD列に表示(Microsoft 365)

解答例(一覧):

=LARGE(B2:B200, SEQUENCE(3))

解答例(合計):

=SUM(LARGE(B2:B200, SEQUENCE(3)))

まとめ

LARGE+SUMは「上位n件の合計」を最短で計算できる定番の組み合わせです。Microsoft 365ならSEQUENCEでn位までを一括抽出してSUM、従来版なら複数のLARGEを足し合わせる形で対応できます。条件付きの上位抽出、重複値の扱い、nの安全化、エラー除去などを押さえれば、実務でも堅牢に運用できます。

タイトルとURLをコピーしました