ADVERTISEMENT

【Googleスプレッドシート】SMALL関数で下位N番目の値を取得!ワースト3の抽出

【Googleスプレッドシート】SMALL関数で下位N番目の値を取得!ワースト3の抽出
🛡️ 超解決

データ分析の現場で、売上が低い商品や成績が悪い生徒など、ワースト3を特定したい場面は多いです。そんなときに便利なのがSMALL関数です。SMALL関数を使えば、指定した範囲から小さい順にN番目の値を簡単に取得できます。この記事では、SMALL関数の基本的な使い方から、ワースト3を効率的に抽出する方法までを丁寧に解説します。初心者の方でも迷わず操作できるように、手順を詳しく説明します。

【要点】SMALL関数で下位N番目の値を取得する方法

  • =SMALL(範囲, n): 範囲内でn番目に小さい値を返す関数です。nに1を指定すると最小値、2を指定すると2番目に小さい値が得られます。
  • ROW関数と組み合わせた抽出: =SMALL($A$2:$A$100, ROW(A1)) と入力して下方向にオートフィルすると、小さい順に値を並べ替えられます。
  • ワースト3の抽出: ROW関数で1,2,3を生成し、それに対応する下位3つの値を取得できます。さらにINDEX+MATCHで元のデータから該当行を引き出すことも可能です。

ADVERTISEMENT

SMALL関数の仕組みと基本構文

SMALL関数は、指定したセル範囲の中から、小さいほうから数えてn番目の値を取り出す関数です。基本構文は次のとおりです。

=SMALL(範囲, 順位)

範囲には数値が入力されたセル範囲を指定します。順位には1から始まる整数を指定します。例えば、=SMALL(A2:A10, 1)は最小値、=SMALL(A2:A10, 3)は3番目に小さい値(下から3番目)を返します。SMALL関数は、データを降順(小さい順)に並べ替えたいときや、最低点・最低価格などを抽出するときに便利です。ただし、範囲に空白セルや文字列が含まれているとエラーになりますので注意しましょう。

SMALL関数の引数「順位」に1を指定するとMIN関数と同じ結果になります。しかし、2番目以降の値を取得できる点がSMALL関数の強みです。LARGE関数が大きい方からN番目を返すのに対し、SMALL関数は小さい方からN番目を返します。

SMALL関数でワースト3を抽出する手順

ここでは、売上データがA2:A20にあるとして、ワースト3の金額を抽出する手順を説明します。さらに、対応する商品名も一緒に取得する方法も紹介します。

  1. SMALL関数を入力するセルを準備する
    セルC2に =SMALL($A$2:$A$20, ROW(A1)) と入力します。ROW(A1)は1を返すため、最初は最小値が表示されます。範囲は絶対参照($A$2:$A$20)にして、後でオートフィルしても範囲がずれないようにします。
  2. オートフィルでワースト3を取得する
    セルC2の右下のフィルハンドルをダブルクリックするか、セルC4までドラッグします。ROW(A1)がROW(A2)、ROW(A3)と変わり、順位が2、3となるため、2番目と3番目に小さい値が表示されます。これでワースト3の金額が取得できます。
  3. 商品名を取得するためのINDEXとMATCHを準備する
    商品名がB2:B20にある場合、セルD2に =INDEX($B$2:$B$20, MATCH(C2, $A$2:$A$20, 0)) と入力します。MATCH関数で金額C2が元データのどの行にあるかを調べ、INDEX関数でその行の商品名を返します。第3引数0で完全一致を指定します。
  4. 商品名もオートフィルで取得する
    セルD2をセルD4までオートフィルします。これで各金額に対応する商品名が表示されます。ただし、同じ金額が複数ある場合は、必ず最初に見つかった行が返されるため注意が必要です。その場合は後述の重複対策を検討しましょう。

この手順で、ワースト3の金額と商品名を一覧表示できます。ROW関数を使うことで、順位を自動的に生成できる点がポイントです。SMALL関数とROW関数の組み合わせは、ワーストNの抽出に非常に効果的です。

SMALL関数使用時の注意点とよくあるトラブル

範囲にエラー値や文字列が含まれている場合

SMALL関数の範囲にエラー値(#N/Aなど)や文字列が含まれていると、結果が#NUM!エラーになります。数値のみの範囲を指定するか、IFERROR関数などでエラーを事前に除去しておきましょう。空白セルは自動的に無視されますが、文字列が混じるとエラーになるため注意が必要です。

順位がデータ数より大きい場合

順位にデータ数を超える数値を指定すると、#NUM!エラーが返ります。例えば、範囲に10個のデータしかないのに順位に11を指定するとエラーになります。事前にCOUNT関数でデータ数を確認するか、エラーをIFERRORで処理することをおすすめします。

重複する値がある場合の扱い

同じ値が複数ある場合、SMALL関数はその値を複数回返します。例えば、1位と2位が同じ値の場合、SMALL関数で1を指定しても2を指定しても同じ値が返ります。そのため、一意のランキングを取得したい場合は、一意の値に変換する処理が必要です。一つの方法として、元のデータに小さな乱数や行番号を加えて疑似一意にする方法があります。ただし、データの正確性が求められる場合は、別のアプローチを検討しましょう。

絶対参照と相対参照の使い分け

オートフィルでSMALL関数をコピーするとき、範囲は絶対参照($A$2:$A$20)にしないと、セルがずれて範囲が変わってしまいます。順位の部分はROW関数で相対的に変えるため、ROW(A1)のように相対参照で問題ありません。この点を間違えると意図した結果が得られないので、入力時によく確認しましょう。

ADVERTISEMENT

SMALL関数と他の関数の比較表

関数名 動作 使用例
SMALL 小さい方からn番目の値を返す =SMALL(A2:A20, 3) で3番目に小さい値
LARGE 大きい方からn番目の値を返す =LARGE(A2:A20, 3) で3番目に大きい値
MIN 最小値を返す =MIN(A2:A20) で最小値
MAX 最大値を返す =MAX(A2:A20) で最大値

SMALL関数とLARGE関数は対になっており、データの下位・上位を分析するときに便利です。MIN関数は最小値のみ、MAX関数は最大値のみしか取得できませんが、SMALL関数は任意の順位の値を取得できるため、より柔軟な分析が可能です。

まとめ

この記事では、SMALL関数を使って下位N番目の値を取得する方法を解説しました。SMALL関数はROW関数と組み合わせることで、ワースト3の抽出を簡単に自動化できます。さらにINDEXやMATCH関数と併用すれば、対応するデータも一緒に表示できます。重複データやエラーには注意が必要ですが、基本的な使い方を覚えればデータ分析の幅が広がります。次のステップとして、IF関数とSMALL関数を組み合わせた条件付きワースト抽出に挑戦してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。