SMALL関数の使い方|n番目に小さい値・下位3つの合計・名前を出す

SMALL関数の使い方|n番目に小さい値を求める

エクセルで、小さいほうから数えて n 番目の値を取り出すには SMALL関数を使います。たとえば売上の3番目に小さい値は、=SMALL(C3:C10,3) で 95 と分かります。

MIN関数は1番目しか出せませんが、SMALL関数なら2番目・3番目も出せるので、下位3つの合計や小さい順の一覧に使えます。この記事では、SMALL関数の基本、セルで n を指定する方法、下位の合計、いちばん小さい人の名前、条件付きの n 番目、データが足りないときの対処までを、1つの表で説明します。下の練習ツールで、売上や n を書き換えて結果の変わり方を試せます。

目次

SMALL関数の書き方

SMALL関数の構文
数式=SMALL(配列,順位)
ひとことで小さいほうから数えた値を求める
配列
データの範囲です
順位
順位です
引数入れるものポイント
配列数値の範囲空欄・文字は無視されます。
順位小さいほうから何番目か1 なら最小値(MIN関数と同じ)です。

まず動かしてみよう|この記事のサンプルをその場で試せます

練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。

SMALL関数の使い方|やりたいこと別の式

やりたいこと式(例)結果
いちばん小さい値=SMALL(C3:C10,1)60
3番目に小さい値=SMALL(C3:C10,3)95
セルで指定した n 番目=SMALL(C3:C10,F12)85
下位3つの合計=SUM(SMALL(C3:C10,{1,2,3}))240
いちばん小さい人の名前=INDEX(A3:A10,MATCH(SMALL(C3:C10,1),C3:C10,0))田中
条件付きの2番目=SMALL(FILTER(C3:C10,B3:B10=”営業”),2)120
データが足りないとき=IFERROR(SMALL(C3:C10,10),”なし”)なし
エクセルのSMALL関数で小さいほうからn番目の売上を求めた表
エクセルのSMALL関数で小さいほうからn番目の売上を求めた表

n番目に小さい値を求める

手順:F4 に SMALL の式を入れて Enter

8 人の売上(C3:C10)から、3 番目に小さい売上を求めます。 F4 に次の式を入力して、Enter キーを押します❶。

F4 に入れる式
=SMALL(C3:C10,3)
C3:C10 配列(売上)3 順位(3番目)
ひとことで売上の中で、小さいほうから3番目の値を求める
式を分けて読むと(色は画像の枠と同じ)
配列C3:C10
どのデータ?
→ 売上の範囲
順位3
小さいほうから何番目?
→ 3番目
自分の表で使うときは
青にデータの範囲、オレンジに何番目かを入れます。例:タイム(D 列)の2番目に速い記録=SMALL(D2:D40,2)
  • 空欄は 0 と数えずに無視されます。
エクセルのSMALL関数で3番目に小さい値を求める式と、売上の範囲を色分けした画面
エクセルのSMALL関数で3番目に小さい値を求める式と、売上の範囲を色分けした画面

確認:3番目に小さい売上は 95 だった

エクセルのSMALL関数で売上の3番目に小さい値が95になったことを示した画面
エクセルのSMALL関数で売上の3番目に小さい値が95になったことを示した画面

答えは 95 になりました❷。式は、次の順に計算しています。

  1. 売上を小さい順に並べる(空欄は除く)
    ⇒ 60・85・95・120・150・150・200
  2. 3番目を取り出す
    ⇒ 95
ヒント:1番目は MIN と同じ
=SMALL(C3:C10,1) は 60 で、MIN関数と同じ結果です。

セルで n を指定する

SMALL関数の式
数式=SMALL(C3:C10,F12)
ひとことで小さいほうから数えた値を求める
C3:C10
データの範囲です
F12
順位です

F12 が 2 なので、2番目に小さい 85 です。順位を 1・2・3… と縦に並べると、小さい順の一覧を作れます。

下位3つの合計を出す

SUM関数の式
数式=SUM(SMALL(C3:C10,{1,2,3}))
ひとことで合計を求める
SMALL(C3:C10,{1,2,3})
合計する範囲です

60+85+95 で、結果は 240 です。

いちばん小さい人の名前を出す

INDEX関数の式
数式=INDEX(A3:A10,MATCH(SMALL(C3:C10,1),C3:C10,0))
ひとことで位置を指定して値を返す
A3:A10
範囲です
MATCH(SMALL(C3:C10,1),C3:C10,0)
行番号です

60 の位置を MATCH関数で探し、INDEX関数で名前を取り出して、結果は 田中 です(LARGE関数の使い方でも同じ形を説明しています)。

条件に合う中で n 番目に小さい値を出す

SMALL関数の構文
数式=SMALL(FILTER(C3:C10,B3:B10="営業"),2)
ひとことで小さいほうから数えた値を求める
FILTER(C3:C10,B3:B10="営業")
データの範囲です
2
順位です

営業の売上は 120・150・60・200 なので、2番目に小さいのは 120 です。FILTER関数は Excel 2021 以降・Microsoft 365 で使えます(FILTER関数の使い方)。

いちばん小さい値と2番目の差を出す

SMALL関数の式
数式=SMALL(C3:C10,2)-SMALL(C3:C10,1)
ひとことで2番目に小さい値から最小値を引く
SMALL(C3:C10,2)
2番目に小さい値です
SMALL(C3:C10,1)
最小の値です

85−60 で 25 です。最下位と次の人の差を見たいときに使えます。

データが足りないときの表示を決める

IFERROR関数の構文
数式=IFERROR(SMALL(C3:C10,10),"なし")
ひとことでエラーを別の値に置き換える
SMALL(C3:C10,10)
エラーかどうかを調べる式です
"なし"
エラーのときの値です

数値は7つなので10番目はなく、#NUM! の代わりに なし と表示されます。

SMALL関数がうまくいかないときの確認表

症状考えられる原因対処
「#NUM!」になる順位が0以下、またはデータの個数より大きいCOUNT関数で個数を確かめる。IFERROR関数で表示を決める。
0 が最小になる0 が入力されている(空欄は無視される)0 を除くなら FILTER(範囲,範囲<>0) と組み合わせる。
数値が対象にならない数値が文字列として入っているVALUE関数などで数値に変換する。
名前が1人しか出ないMATCH関数は最初の1つだけ見つけるFILTER関数で同じ値の人を全部出す。

SMALL関数のよくある質問

大きいほうから n 番目は?

LARGE関数を使います(LARGE関数の使い方)。

並べ替えた一覧をまとめて出すには?

Microsoft 365 なら SORT関数で、範囲を小さい順に並べ替えて一度に表示できます。

あわせて読みたい:順位・並べ替えの関連記事

練習用ファイル:練習用Excelファイル(.xlsx・無料)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次