• 更新日 : 2025年8月5日

SMALL関数とは?ROW関数やIF関数との組み合わせ、エラー対策を解説

エクセルのSMALL関数(読み方:スモール関数)を使えば、大量のデータから「N番目に小さな値」を簡単に抽出できます。

成績の下位順位を知りたいときや、売上が低い順に並べたいときなどに便利です。本記事では、SMALL関数の基本構文からエラーの対処法、実用的な応用テクニックまでをわかりやすく解説します。

SMALL関数とは?その役割と基本概念

SMALL関数は、指定されたデータ範囲の中から、小さい方から数えて指定した順位(N番目)の値を返す関数です。たとえば、テストの点数のリストから3番目に低い点数を知りたい場合や、売上データの中から下位5位の店舗の売上を抽出したい場合などに役立ちます。

この関数は、最大値や最小値を求める関数(MAX関数、MIN関数)とは異なり、特定の位置にある値をピンポイントで取得できる点が大きな特徴です。これにより、単なる極値の把握にとどまらず、データの分布や偏りをより詳細に分析することが可能になります。

SMALL関数の基本的な使い方

SMALL関数の書式は、以下のようになります。

=SMALL(配列, 順位)
  • 配列 (array):対象となる数値データが含まれるセル範囲、または数値の配列を指定します。
  • 順位 (k):小さい方から数えて何番目の値を取得したいかを指定する数値です。1を指定すれば最小値、2を指定すれば2番目に小さい値が返されます。

具体的な例を見てみましょう。

A
1100
250
380
430
5120

上記のデータがあるとします。

  • =SMALL(A1:A5, 1) → 30 (最小値)
  • =SMALL(A1:A5, 2) → 50 (2番目に小さい値)
  • =SMALL(A1:A5, 3) → 80 (3番目に小さい値)

このように、順位の引数を変更するだけで、簡単に目的の値を抽出できます。

SMALL関数のエラーと対策

SMALL関数を使用する際に発生する可能性のあるエラーとその対策について理解しておくことは、スムーズなデータ分析に不可欠です。主なエラーとして、#NUM!エラーと#VALUE!エラーが挙げられます。

#NUM!エラー

このエラーは、順位の引数に指定した値が、配列内のデータの個数を超えている場合に発生します。たとえば、5つの数値データしかないにもかかわらず、順位に6を指定するとこのエラーが表示されます。順位に0以下の値を指定した場合にも発生します。

対策として、順位の引数が配列内のデータの個数以下であり、かつ1以上の数値であることを確認してください。データの個数を数えるにはCOUNT関数を利用すると便利です。

#VALUE!エラー

SMALL関数は通常、配列内の数値以外のデータ(文字列・空白)を無視します。ただし、配列数式で条件付きに使用する場合、数値として扱えないエラー値や、不適切な形式の文字列などが含まれると#VALUE!エラーになることがあります。SMALL関数は数値データを対象とするため、データ型には注意が必要です。

対策として、 配列として指定した範囲に、数値以外のデータが含まれていないかを確認してください。数値以外のデータが含まれる場合は、それらを削除するか、SMALL関数が対象としない範囲に移動させるなどの対応が必要です。

これらのエラーを事前に理解し、適切な対策を講じることで、SMALL関数をより効果的に活用し、データ分析の精度を高められます。

SMALL関数の利用シーン

ここではSMALL関数の具体的な利用シーンをいくつかご紹介します。

1. 順位付けとランキングの作成

スポーツの成績、テストの点数、営業成績など、さまざまなデータにおいて下位から順位を把握したい場合にSMALL関数を利用します。

  • 例:テストの点数の下位5位を抽出する
    学生のテスト点数リストから、下位5人の点数と氏名を抽出したい場合にSMALL関数が役立ちます。SMALL関数で点数を取得し、INDEX関数やMATCH関数と組み合わせることで、該当する学生名も同時に表示できます。

2. データフィルタリングと条件付き分析

特定の条件を満たすデータの中から、さらに小さい値を抽出したい場合にもSMALL関数は有効です。

  • 例:特定の商品の最安値とその次の安値を見つける
    IF関数とSMALL関数を組み合わせた配列数式を使用します。複数の店舗で販売されている同じ商品の価格データがあるとして、その中の最安値と2番目に安い価格をそれぞれ抽出したい場合に利用できます。IF関数と組み合わせることで、特定の条件(例:店舗名、商品カテゴリなど)を満たすデータのみを対象とすることも可能です。

3. 外れ値の特定

データセットの中に極端に小さい値(外れ値)が含まれていないかを確認する際にも、SMALL関数は役立ちます。既存のベンチマークや過去のデータと比較して、最小値や2番目に小さい値が極端に他の値と離れている場合、それはデータ入力ミスや特殊な状況を示す可能性があります。

  • 例:製造ラインの不良品発生率の異常値検知
    製造ラインにおける日ごとの不良品発生率のデータがあるとして、下位数値をSMALL関数で抽出し、基準値と比較することで、異常に低い発生率がないかデータの下位端を確認し、その手がかりを得るのに役立ちます。ただし、厳密な異常値検知には、平均値や標準偏差、四分位範囲など、より統計的な手法を用いることが一般的です。

4. 統計分析における活用

統計分析において、データの分布を理解するためには、最小値だけでなく、さまざまなパーセンタイル値(たとえば、25パーセンタイル値)を把握することが重要です。

SMALL関数は、k番目に小さい値を取得できるため、特に正確なパーセンタイル関数が利用できない場合やカスタム パーセンタイル計算を構築する必要がある場合に、データの分布を理解するための優れたツールになります。

SMALL関数の応用テクニック

SMALL関数は、他の関数と組み合わせることで、より複雑なデータ分析に対応できます。

1. SMALL関数とIF関数の組み合わせ:条件付きで「N番目に小さな値」を抽出する

特定の条件を満たすデータの中からN番目に小さい値を抽出したい場合に、IF関数とSMALL関数を組み合わせるのが非常に有効です。これは配列数式として入力する必要があります。

  • 例:特定の部署の従業員の最低評価点数を抽出する
    部署名と従業員の評価点数が記載されたデータがあるとして、特定の部署(例:「営業部」)の従業員の中で、最も低い評価点数(または2番目に低い評価点数など)を抽出したい場合。=SMALL(IF(B2:B10=”営業部”,C2:C10),1)この数式は、B列が「営業部」であるC列の値のみを抽出し、その中から最小値(1番目に小さい値)を返します。古いバージョンのExcelでは、この数式は、通常のエンターキーではなく、Ctrl + Shift + Enterで入力し、配列数式として確定する必要があります。

数式バーには{=SMALL(IF(B2:B10=”営業部”,C2:C10),1)}のように波括弧が表示されます。

2. SMALL関数とROW関数の組み合わせ:重複しない「N番目に小さな値」を抽出する

データの中に重複する値が含まれている場合、SMALL関数はそれらを区別せず同じ順位として扱います。重複する値が存在する中でも、完全にユニークなN番目の値を抽出したい場合には、ROW関数と組み合わせることで対応できます。

  • 例:重複を考慮した点数ランキング
    複数の学生が同じ点数を取っている場合に、重複を考慮して順位付けしたい場合です。=SMALL(A1:A10+ROW(A1:A10)/100000, 順位)この数式は、元の点数に非常に小さな値を加えることで、同じ点数であっても元の行番号に基づいて微妙な差を作り出し、同順位のデータ間でソート順を安定させられます。ROW(A1:A10)/100000の部分は、元の数値に影響を与えない程度の微小な値を加えるための工夫です。この数式も配列数式として入力する必要があります。

3. SMALL関数とINDEX/MATCH関数の組み合わせ:N番目に小さい値に対応する情報を取得する

SMALL関数でN番目に小さい値を特定した後、その値がどのデータに対応しているのかを知りたい場合に、INDEX関数とMATCH関数を組み合わせることで、関連する情報を取得できます。

  • 例:下位3位の売上を記録した店舗名を取得する
    店舗名と売上データがあるとして、下位3位の売上を記録した店舗名をそれぞれ取得したい場合。売上データがB列、店舗名がA列にあると仮定します。
    =INDEX(A:A,MATCH(SMALL(B:B,1),B:B,0)) → 最も売上が低い店舗名
    =INDEX(A:A,MATCH(SMALL(B:B,2),B:B,0)) → 2番目に売上が低い店舗名SMALL(B:B,1)で最小の売上額を取得し、その売上額がB列のどこにあるかをMATCH関数で探し、対応するA列の店舗名をINDEX関数で取得します。

ただし、この方法は、同じ売上額の店舗が複数存在する場合に、最初に一致した店舗名のみを返す点に注意が必要です。重複する値がある場合は、より複雑な配列数式や補助列を利用するなどの工夫が必要になります。

なお列全体の参照(A:A、B:B)は便利ですが、非常に大きなワークシートではパフォーマンスに影響を及ぼす場合があります。大きなワークシートで計算する場合は、特定の範囲を指定するか、テーブルを使用するのがおすすめです。

4. LARGE関数との比較:最小値と最大値の対称性

SMALL関数と対をなす関数として「LARGE関数」があります。SMALL関数が「N番目に小さな値」を返すのに対し、LARGE関数は「N番目に大きな値」を返します。

  • LARGE関数の書式:=LARGE(配列, 順位)

この2つの関数は、データの分布を両端から分析する際に非常に役立ちます。たとえば、テストの成績で最高点と最低点、売上ランキングで上位3位と下位3位などを比較したいとき、SMALL関数とLARGE関数を組み合わせることで、よりバランスの取れた視点でデータの広がりを評価できます。

SMALL関数を使いこなすためのヒントと注意点

SMALL関数を効果的に活用するためには、いくつかのヒントと注意点を押さえておくことが重要です。

空白セルや文字列の扱い

SMALL関数は、配列内に含まれる空白セルや文字列を無視して数値データのみを処理します。これは多くの場合において便利ですが、意図せず数値以外のデータが混入していると、期待通りの結果が得られない可能性があります。特に、数値を文字列として入力してしまっている場合(例:「100」ではなく’100のようにアポストロフィがついている場合など)は注意が必要です。

データの並べ替えは不要

SMALL関数は、データを事前に並べ替える必要がありません。指定された配列の中から、内部的に値を比較し、指定された順位の値を返します。これにより、元のデータの順序を維持したまま分析を進められます。

大量のデータにおけるパフォーマンス

非常に大量のデータ(数万行以上)に対してSMALL関数を使用する場合、計算に時間がかかることがあります。特に配列数式と組み合わせる場合、パフォーマンスに影響が出やすい傾向があります。このような場合は、データの範囲を適切に絞り込む、テーブルを活用する、またはより効率的なデータ処理方法(例:ピボットテーブル、Power QueryやVBAの利用)を検討することも有効です。

複数の条件で「N番目に小さい値」を取得する

SMALL関数とIF関数を組み合わせることで、複数の条件を満たすデータの中からN番目に小さい値を抽出することが可能です。たとえば、「部署が営業部」かつ「性別が女性」の従業員の中で、最も低い評価点数を取得したい場合などです。

=SMALL(IF((B2:B10=”営業部”)*(C2:C10=”女性”),D2:D10),1)

このように、複数の条件を*(アスタリスク/論理積)でつなぐことで、AND条件を指定できます。この数式も配列数式として入力します。

SMALL関数を活用してデータ分析の精度とスピードを向上

SMALL関数は、単なる最小値の取得にとどまらず、「下から◯番目」の値を柔軟に抽出できる優れた関数です。IF関数やROW関数、INDEX・MATCH関数と組み合わせれば、条件付き抽出や関連情報の表示、重複回避など多様な場面で活躍します。

エラー処理やパフォーマンス面での注意も押さえることで、より正確かつ効率的なデータ処理が可能になります。順位付けや統計処理の一環として、ぜひ日常業務に取り入れてみてください。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事