この記事で分かること
- LARGE・SMALL で上位N件を並べ替えずに取り出し、上位5社・10社の売上比率と累積比率を求める方法
- 同額の顧客がいると、順位から引いた会社名が重複する理由と補助列での直し方
- MAXIFS・MINIFS で条件付きの最大・最小を求め、コンプス(類似会社比較)の倍率の外れ値候補を点検する方法
想定読者:PE・FAS・経営企画などで顧客別売上表や類似会社の倍率表を扱い、更新のたびに手作業で数字を直している方
前提知識:SUM や COUNTIF の基本、セルの絶対参照($C$2 の書き方)。LARGE などの関数は初めてで構いません
結論:上位N件は LARGE、条件付きの最大・最小は MAXIFS・MINIFS
顧客別売上表を並べ替えて上位10社を合計する手順は、売上の更新のたびにやり直しになります。LARGE 関数は「k 番目に大きい値」を返すので、並べ替えなしで1位から10位の売上を取り出せます。以下は学習用の架空事例ですが、50社・売上合計100,000百万円の表では、上位5社が35.4%、上位10社が53.9%を占めます(図表1)。
つまずきやすいのは、同額の顧客がいると順位から引いた会社名が重複する点と、条件付きの最大・最小の求め方です。顧客集中度の定義と評価(契約内容やスイッチングコストなど)は、顧客集中度分析と顧客集中リスクの評価に委ね、本稿は数字を Excel で出す方法に絞ります。
LARGE・SMALL の基本:k 番目の値を返し、数値だけを数える
LARGE 関数の書式は LARGE(配列, k) で、配列(セル範囲)の中で大きい方から k 番目の値を返します。SMALL 関数は小さい方から数えます。k が0以下、または対象データの個数より大きいと #NUM! エラーになります1。50社の表で LARGE(売上,51) とすると #NUM! です(Excelのエラー値)。
もうひとつの注意点は件数です。類似会社の表では、EV/EBITDA 倍率(企業価値を EBITDA で割った倍率)が算出できない会社に「NM」という文字を入れることがあります。COUNT 関数は、範囲の中の数値だけを数え、文字列や空白は数えません2。設例(類似会社12社のうち2社が NM)を編集部が Excel に入力して確かめると、COUNT(倍率の範囲) は10、LARGE(倍率の範囲,10) は最小の2.1、LARGE(倍率の範囲,11) は #NUM! でした。k の上限は会社数(12社)ではなく数値の件数(10件)です。
件数を超える k のガード=IF(k>COUNT(範囲),"",LARGE(範囲,k))
倍率の範囲で k が4なら9.8、11なら空白が返ります。
上位N社の売上比率と累積比率を求める
以下は学習用の架空事例です。顧客別売上表は50社分で、A 列=顧客名、B 列=セグメント(A・B・C)、C 列=売上(百万円)を2〜51行目に入力します。売上の合計100,000百万円は損益計算書の売上高と一致すると仮定し、=SUM(C2:C51) の検算セルを置きます。これが上位N社比率の分母です。F 列に順位 k(1〜10)を並べ、G 列以降に次の式を入れます。
順位ごとの売上・構成比・累積比(2行目の例)
売上:=LARGE($C$2:$C$51,F2)
構成比:=G2/SUM($C$2:$C$51)
累積比:=SUM($G$2:G2)/SUM($C$2:$C$51)
10行ぶん下にコピーすると図表1ができます。比率は小数第1位までの表示で、セルの値は丸めていません。
| 順位 | 顧客 | セグメント | 売上 | 構成比 | 累積比 |
|---|---|---|---|---|---|
| 1 | 顧客31 | A | 9,800 | 9.8 | 9.8 |
| 2 | 顧客08 | B | 7,600 | 7.6 | 17.4 |
| 3 | 顧客17 | A | 6,400 | 6.4 | 23.8 |
| 4 | 顧客33 | C | 6,400 | 6.4 | 30.2 |
| 5 | 顧客42 | B | 5,200 | 5.2 | 35.4 |
| 6 | 顧客05 | A | 4,500 | 4.5 | 39.9 |
| 7 | 顧客26 | C | 4,100 | 4.1 | 44.0 |
| 8 | 顧客12 | B | 3,600 | 3.6 | 47.6 |
| 9 | 顧客47 | A | 3,300 | 3.3 | 50.9 |
| 10 | 顧客21 | C | 3,000 | 3.0 | 53.9 |
| 上位5社 / 上位10社 | 35,400 / 53,900 | 35.4 / 53.9 | |||
図表1では、上位5社の売上が 9,800+7,600+6,400+6,400+5,200=35,400百万円で、35,400÷100,000=35.4%、上位10社は53,900百万円で53.9%です。累積比の10位の行が上位10社比率になります。この累積比の並びは、パレート分析の累積構成比と同じ考え方です。
合計の出し方は2通りある
合計だけなら、波かっこの配列定数で k を並べた =SUM(LARGE($C$2:$C$51,{1,2,3,4,5})) の1セルでも35,400が返ります(SUMPRODUCT関数でも同じ)。ただし N を変えるたびに式を直す必要があり、途中の値も見えないため、編集部は1行ずつ並べた図表1の形を本体にし、1セル版を検算に使うことを勧めます。
「10位以上の売上を足す」=SUMIF($C$2:$C$51,">="&LARGE($C$2:$C$51,10)) は、境界の同額に弱い方法です。仮に10位と11位がともに3,000百万円なら、53,900ではなく56,900を返します。
同額の顧客がいると、順位から会社名を引くときに重複する
図表1の「顧客」列は、LARGE の値を MATCH で探し、INDEX で顧客名を返す形で引き当てるのが素直です。MATCH(検査値,検査範囲,0) の「0」は完全一致で、一致する最初の値の位置を返します3。そのため同額の顧客が2社いると、2社目を探しても1社目の位置が返ります。
設例では顧客17と顧客33の売上がともに6,400百万円で、LARGE は3位にも4位にも6,400を返します。3位の行の =INDEX($A$2:$A$51,MATCH(G4,$C$2:$C$51,0)) も、G5 を探す4位の行も、表の上にある顧客17を返し、4位に顧客17が重複します(図表2の「補助列なし」)。XLOOKUP 関数も最初に見つかった一致を返すため4、替えても解決しません(同ページには Excel 2016・2019 では使えないとの記載もあります。使い分けはINDEX/MATCHとXLOOKUP実践)。
| 順位 | 売上 | 補助列なし | 補助列あり |
|---|---|---|---|
| 2 | 7,600 | 顧客08 | 顧客08 |
| 3 | 6,400 | 顧客17 | 顧客17 |
| 4 | 6,400 | 顧客17(重複) | 顧客33 |
| 5 | 5,200 | 顧客42 | 顧客42 |
直し方は、D 列に「一意順位」の補助列を作り、同額には表の上から順に別の順位を振ることです。
一意順位の補助列(D2、下にコピー)=RANK.EQ(C2,$C$2:$C$51,0)+COUNTIF($C$2:C2,C2)-1
RANK.EQ は大きい順の順位を返し、同額には同じ順位を付けます(STDEV・VAR・PERCENTILE・RANK関数)。COUNTIF($C$2:C2,C2) は、2行目から現在の行までに同じ売上が何回出たかを数えます。顧客17(18行目)は3+1-1=3、顧客33(34行目)は3+2-1=4です。
名前を =INDEX($A$2:$A$51,MATCH(F2,$D$2:$D$51,0)) で引くと、3位が顧客17、4位が顧客33と分かれます(図表2の「補助列あり」)。同額の中の並びは表の上の行を先にするという取り決めで、事業の実態による順位ではありません。売上も同じ形で引いて LARGE の値と比べるか、一意順位の合計が 1+2+…+50=1,275 になるかで検算できます。設例では2,300・1,200・550も各2社あり、同額は上位だけの話ではありません。
条件付きの最大・最小:MAXIFS・MINIFS
MAXIFS 関数は、条件で指定したセルの中の最大値を返し、書式は MAXIFS(最大範囲,条件範囲1,条件1,[条件範囲2,条件2],…) です。範囲と条件は最大126組まで指定でき、範囲のサイズ・形状が違うと #VALUE!、一致するセルがないと0が返ります5。MINIFS 関数は最小値を返し、書式は同じです6。
顧客別売上表と、類似会社表(A 列=会社名、B 列=売上高、C 列=EV/EBITDA 倍率。2〜13行目)で、図表3の7つを求めます。たとえば3番は =MINIFS($C$2:$C$51,$B$2:$B$51,"A",$C$2:$C$51,">=3000")、6番は =MAXIFS($C$2:$C$13,$B$2:$B$13,">=10000") です。ほかの行も、範囲・条件・関数名を入れ替えるだけです。
| 求めたいもの | 結果 | 該当件数 |
|---|---|---|
| 1 セグメントBの最大売上 | 7,600 | 19 |
| 2 セグメントCの最大売上 | 6,400 | 15 |
| 3 セグメントA・売上3,000以上の最小 | 3,300 | 4 |
| 4 セグメントC・売上6,000未満の最大 | 4,100 | 14 |
| 5 セグメントC・売上7,000以上の最大 | 0 | 0 |
| 6 類似会社・売上高10,000以上の最大倍率 | 24.6 | 8 |
| 7 類似会社・売上高10,000以上の最小倍率 | 6.9 | 8 |
図表3の5つ目「セグメントCで7,000以上」は該当がなく、結果は0です。この0は「該当なし」の意味なので、COUNTIFS で該当件数を並べると誤読を防げます。また売上の単位が百万円なら、「100億円以上」は ">=10000" です。">=100" と書くと、ほぼ全件が条件に合ってしまいます。
対応バージョンは、Microsoft サポートの「適用先」にExcel 2019、2021、2024、Microsoft 365 が挙げられ、それ以前のバージョンは含まれていません7。古い Excel と共有するなら、=MAX(IF($B$2:$B$13>=10000,$C$2:$C$13)) の配列数式(Ctrl+Shift+Enter で確定)で代替でき、設例では24.6を返しました(レガシー配列数式とスピル配列の違い)。
コンプスの外れ値候補を、最大・最小と中央値の比で確認する
類似会社比較(コンプス)では、各社の倍率の中央値などで評価に使う倍率を決めます。類似会社の選び方は類似会社選定基準とEV/EBITDA倍率と類似会社比較法に委ね、ここでは飛び抜けた値の点検だけを扱います。設例の類似会社12社が図表4です。H社とK社は NM で、倍率のある会社は10社です。中央値を求める MEDIAN 関数は、範囲の文字列・論理値・空白を無視し、ゼロは含めます8。10社の倍率は大きい順に 24.6、11.5、10.2、9.8、8.6、8.1、7.4、6.9、5.2、2.1 で、中央値は5番目と6番目の平均(8.6+8.1)÷2=8.35倍です。
確認列には、最大値と最小値を中央値で割った比を置きます。=MAX(C2:C13)/MEDIAN(C2:C13) は 24.6÷8.35=2.95倍、=MIN(C2:C13)/MEDIAN(C2:C13) は 2.1÷8.35=0.25倍です(小数第3位を四捨五入)。売上高10,000百万円以上の9社(倍率ありは8社)に絞ると、MAXIFS は24.6のまま、MINIFS は6.9(中央値の0.83倍)になります(図表3の6・7)。最小の2.1は売上高3,800百万円の類似L社で、規模の条件を付けると対象から外れ、条件付きの最小は中央値に近づきます。最大の24.6は売上高12,500百万円の類似I社で、条件を付けても残ります。
この比は確認のきっかけにすぎません。最小値は規模の小ささが一因という仮説が立ち、最大値は分母の EBITDA が小さい、特殊要因があるなど、背景を元資料で確かめる候補になります。外れ値を判定する決まった基準はなく、「中央値の3倍だから除外する」といった機械的な運用は避け、事業内容や財務の中身を見て判断します。
実務チェックリスト
- LARGE・SMALL の範囲に合計行が入っていないか(入ると1位が合計になる)。k が件数を超えないよう
COUNTでガードしたか。 - 上位N社比率の分母(顧客別売上の合計)が売上高と一致する検算セルがあるか。
- 会社名を引く表に一意順位の補助列を入れ、1〜N が1回ずつ現れるか確かめたか。
- 条件付きの最大・最小の隣に該当件数(
COUNTIFS)を置き、0を「該当なし」と読めるか。 - 範囲の形状と条件の単位(百万円か億円か)が合っているか、共有先の Excel が対応バージョンか。
- 倍率が NM の会社に0を入れていないか(0は数値として MIN や MEDIAN に入る)。
よくある質問(F AQ)
「セ グメントAの上位3社」のように、条件付きの第 k 位は MAXIFS で出せますか。
MAXIFS と MINIFS が返すのは条件に合う最大と最小だけです。第2位以降には配列数式や AGGREGATE 関数を使う方法があり、基本はSUBTOTAL・AGGREGATE関数の記事で扱っています。
倍率が NM の会社は、空白にしてもよいですか。
LARGE・SMALL・MAX・MIN・MEDIAN では文字列も空白も対象外なので、結果は同じです。ただし
まとめ
LARGE と SMALL は並べ替えなしで k 番目の値を取り出し、上位N社の売上比率と累積比率を元データに追随させます。会社名を引くときは、一意順位の補助列で同額の重複を防ぎます。MAXIFS と MINIFS は条件付きの最大・最小を1つの式で求め、最大・最小と中央値の比は外れ値候補を点検するきっかけになります。件数のガードと検算セルが、更新時のずれを防ぎます。
脚注
- Microsoft サポート「LARGE 関数」「SMALL 関数」の「解説」。k が0以下、または対象データの個数より大きい場合に #NUM! が返ると書かれている(参考文献 R1・R2)。↩
- Microsoft サポート「COUNT 関数」の「解説」。配列やセル範囲の参照では数値だけが対象で、空白セル・論理値・文字列・エラー値は数えないと書かれている(R3)。↩
- Microsoft サポート「MATCH 関数」の「照合の型」の表。照合の型が0のとき、検査値と完全に一致する最初の値を検索すると書かれている(R4)。↩
- Microsoft サポート「XLOOKUP 関数」。最初に見つかった一致に対応する項目を返すこと、Excel 2016 および Excel 2019 では使用できないことが書かれている(R5)。↩
- Microsoft サポート「MAXIFS 関数」の「構文」「解説」「例」。範囲と条件は最大126組、サイズ・形状が異なると #VALUE!(例5)、一致するセルがないと0(例6)とある(R6)。↩
- Microsoft サポート「MINIFS 関数」の「構文」。
MINIFS(最少範囲, 条件範囲1, 条件1, …)の書式と、最大126組の範囲と条件を指定できることが書かれている(R7)。↩ - Microsoft サポート「MAXIFS 関数」「MINIFS 関数」の冒頭の「適用先」(R6・R7)。Wall Street Oasis の MAX・MIN 関数の解説にも、両関数は Excel 2019 と Excel 365 でのみ使え、
MAX(IF())で代替できるとある(R8・R9)。↩ - Microsoft サポート「MEDIAN function」(英語版)の Remarks。文字列・論理値・空のセルは無視し、値がゼロのセルは含めると書かれている(R10。訳は編集部)。↩
参考文献(2 026年10月確認)
- R1 Microsoft サポート
「L ARGE 関数」 support.microsoft.com (参照箇所:「解説」。脚注1の根拠。閲覧日:2026年10月24日) - R2 Microsoft サポート
「S MALL 関数」 support.microsoft.com (参照箇所:「解説」。脚注1の根拠。閲覧日:2026年10月24日) - R3 Microsoft サポート
「C OUNT 関数」 support.microsoft.com (参照箇所:「解説」。脚注2の根拠。閲覧日:2026年10月24日) - R4 Microsoft サポート
「M ATCH 関数」 support.microsoft.com (参照箇所:「書式」の照合の型の表。脚注3の根拠。閲覧日:2026年10月24日) - R5 Microsoft サポート
「X LOOKUP 関数」 support.microsoft.com (参照箇所:冒頭の注・構文の説明。脚注4の根拠。閲覧日:2026年10月24日) - R6 Microsoft サポート
「M AXIFS 関数」 support.microsoft.com (参照箇所:「適用先」「構文」「解説」「例」。脚注5・7の根拠。閲覧日:2026年10月24日) - R7 Microsoft サポート
「M INIFS 関数」 support.microsoft.com (参照箇所:「適用先」「構文」「解説」。脚注6・7の根拠。閲覧日:2026年10月24日) - R8 Wall Street Oasis「MAX Function」 wallstreetoasis.com (一般的な概念の参考。参照箇所:「MAXIFS Function」の節。脚注7の根拠。閲覧日:2026年10月24日)
- R9 Wall Street Oasis「MIN Function」 wallstreetoasis.com (一般的な概念の参考。参照箇所:「MINIFS function」の節。脚注7の根拠。閲覧日:2026年10月24日)
- R10 Microsoft サポート
「M EDIAN function」(英 語版) support.microsoft.com (参照箇所:「Remarks」。脚注8の根拠。閲覧日:2026年10月24日)
※本記事は教育目的の一般的な解説であり、法務・税務・投資助言ではありません。設例は理解のための学習用の架空事例であり、実在の企業・案件とは関係ありません。