スプレッドシートのSMALL関数の使い方|k番目に小さい値を取り出す方法

スポンサーリンク

「下位の値を取り出したいのに、MIN関数だと最小値しかわからない」。そんな経験はありませんか?

2番目、3番目に小さい値を手作業で探すのは面倒ですよね。データが増えるほどミスのリスクも上がります。

SMALL関数を使えば、k番目に小さい値を一発で取り出せます。この記事では基本の書き方から実務パターン、エラー対処法まで丁寧に解説します。

SMALL関数とは?k番目に小さい値を返す関数

SMALL関数は、データの中からk番目に小さい値を返す関数です。読み方は「スモール」で、英語の「Small(小さい)」がそのまま名前になっています。

たとえばk=1なら最小値、k=2なら2番目に小さい値を返します。「下位N番目の値を取り出す」ときに使う関数です。

MIN関数は常に1番目(最小値)しか返せません。「2番目以降も取り出したい」ときにSMALL関数の出番です。

基本構文

=SMALL(データ, k)

引数の説明

引数必須/任意説明
データ必須値を取り出す対象のセル範囲や配列
k必須何番目に小さい値を取り出すか(1=最小値)

引数はたった2つです。LARGE関数と同じ構造なので、セットで覚えられますよ。

基本的な使い方

実際にSMALL関数を使ってみましょう。

B2:B8に「85, 92, 78, 95, 88, 70, 100」の7個の数値が入っているとします。

=SMALL(B2:B8, 1)  → 70(1番目に小さい値)
=SMALL(B2:B8, 2)  → 78(2番目に小さい値)
=SMALL(B2:B8, 3)  → 85(3番目に小さい値)

kの値を変えるだけで、好きな順位の値を取り出せます。k=1のときはMIN関数と同じ結果です。

NOTE

SMALL関数は数値だけを対象にします。文字列・空白セル・論理値は無視されます。

SMALL関数の実務活用パターン4選

基本を押さえたところで、実務での使いどころを紹介します。

下位3件の売上を取り出す(ワースト分析)

月次売上の一覧から、下位3件の金額を取り出すケースです。

=SMALL(C2:C13, 1)  → ワースト1位の売上額
=SMALL(C2:C13, 2)  → ワースト2位の売上額
=SMALL(C2:C13, 3)  → ワースト3位の売上額

C列に12か月分の売上金額が入っていれば、ワースト3が一発で表示されます。「どの月の売上がふるわなかったか」を分析したいときに便利です。

2番目に低いコストを確認する

仕入れ原価で「最安値は特価で参考にならない」という場面があります。そんなときはk=2を指定して、2番目に低い価格を取り出しましょう。

=SMALL(D2:D50, 2)

最安値を除いた実質的な底値が確認できます。相場感をつかみたいときにも使えるテクニックです。

下位N件の合計を求める(SMALL + SUM)

「売上ワースト3の合計」を求めたい場合は、SUM関数と組み合わせます。

=SUM(SMALL(C2:C13, {1,2,3}))

{1,2,3} は配列定数です。SMALL関数が1位・2位・3位の値をそれぞれ返し、SUM関数で合計します。

下位5件にしたい場合は {1,2,3,4,5} に変えるだけです。手軽に下位N件の合計が出せますよ。

2番目に小さい値の担当者名を取得する

「2番目に低い売上の担当者は誰?」を調べるには、INDEX関数とMATCH関数を組み合わせます。

=INDEX(A2:A10, MATCH(SMALL(B2:B10, 2), B2:B10, 0))

処理の流れはこうです。

  1. SMALL(B2:B10, 2) → 2番目に小さい売上額を取得
  2. MATCH(…, B2:B10, 0) → その値のある行番号を検索
  3. INDEX(A2:A10, …) → 対応する担当者名を取得

ちょっと長い数式に見えますが、やっていることはシンプルです。SMALL関数で値を特定し、MATCHで位置を探し、INDEXで名前を取る3ステップです。

よくあるエラーと対処法

SMALL関数で発生するエラーを2つ紹介します。

#NUM! エラー(kがデータ数を超えている)

これが最も多いエラーです。データが7個しかないのにk=10を指定すると、#NUM!エラーになります。

=SMALL(B2:B8, 10)  → #NUM!

B2:B8は7セルなので、kは1から7までしか指定できません。k=0やマイナスの値でもエラーになります。

対処法:

  • kの値がデータ数を超えていないか確認する
  • データ数が変動する場合は COUNT(B2:B8) で件数を把握する
  • kの上限チェックには次の数式が使えます
=IF(E1<=COUNT(B2:B8), SMALL(B2:B8, E1), "データ不足")

#VALUE! エラー(kに数値以外を指定)

kに文字列やセル参照の文字列型を指定するとエラーです。

=SMALL(B2:B8, "二")  → #VALUE!

kには必ず数値を指定してください。セル参照を使う場合は、参照先が数値型か確認しましょう。

MIN関数との使い分け

SMALL関数とMIN関数の関係はシンプルです。

場面使う関数書き方
1番目に小さい値(最小値)MIN=MIN(B2:B8)
2番目以降に小さい値SMALL=SMALL(B2:B8, 2)

1番目だけ必要ならMIN関数で十分です。2番目以降が必要になったらSMALL関数に切り替えてください。

ちなみに =SMALL(B2:B8, 1)=MIN(B2:B8) は同じ結果を返します。ただし可読性を考えると、最小値にはMIN関数を使うほうが意図が伝わりやすいです。

LARGEとの対比・RANK関数との違い

SMALL関数と混同しやすい関数が2つあります。

LARGE関数(k番目に大きい値)

LARGE関数はSMALL関数の逆で、k番目に大きい値を返します。構文は完全に同じ構造です。

=SMALL(B2:B8, 1)  → 70(最小値)
=LARGE(B2:B8, 1)  → 100(最大値)
関数返す値k=1のとき
SMALLk番目に小さい値MIN関数と同じ
LARGEk番目に大きい値MAX関数と同じ

「下位の値ならSMALL、上位の値ならLARGE」と覚えてください。

RANK関数(順位を求める関数)

RANK関数はSMALL関数と逆方向の操作をします。

  • SMALL関数: 順位を指定 → 値を返す(「2番目に小さい値は?」)
  • RANK関数: 値を指定 → 順位を返す(「70点は何番目?」)
=SMALL(B2:B8, 1)        → 70(1番目に小さい値)
=RANK(70, B2:B8, 1)     → 1(70は昇順で1番目)

NOTE

RANK関数の第3引数に1を指定すると昇順(小さい順)になります。省略すると降順(大きい順)です。

「値を取り出したい」ならSMALL関数を使います。「順位を知りたい」ならRANK関数を使います。目的に応じて使い分けてください。

まとめ

SMALL関数は「k番目に小さい値を取り出す」関数です。MIN関数では対応できない「2番目以降の値」を簡単に取得できます。

この記事のポイント

  • 構文は =SMALL(データ, k) のたった2引数
  • k=1なら最小値(MINと同じ)、k=2以降で真価を発揮
  • SUM関数と組み合わせれば下位N件の合計も出せる
  • #NUM!エラーはkがデータ数を超えているのが原因
  • LARGEは逆方向(k番目に大きい値)、RANKは逆操作(値→順位)

次のステップ:関連する集計関数

SMALL関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データの分析力がぐっと上がりますよ。

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