データ分析の現場で、売上が低い商品や成績が悪い生徒など、ワースト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の金額を抽出する手順を説明します。さらに、対応する商品名も一緒に取得する方法も紹介します。
- SMALL関数を入力するセルを準備する
セルC2に =SMALL($A$2:$A$20, ROW(A1)) と入力します。ROW(A1)は1を返すため、最初は最小値が表示されます。範囲は絶対参照($A$2:$A$20)にして、後でオートフィルしても範囲がずれないようにします。 - オートフィルでワースト3を取得する
セルC2の右下のフィルハンドルをダブルクリックするか、セルC4までドラッグします。ROW(A1)がROW(A2)、ROW(A3)と変わり、順位が2、3となるため、2番目と3番目に小さい値が表示されます。これでワースト3の金額が取得できます。 - 商品名を取得するためのINDEXとMATCHを準備する
商品名がB2:B20にある場合、セルD2に =INDEX($B$2:$B$20, MATCH(C2, $A$2:$A$20, 0)) と入力します。MATCH関数で金額C2が元データのどの行にあるかを調べ、INDEX関数でその行の商品名を返します。第3引数0で完全一致を指定します。 - 商品名もオートフィルで取得する
セル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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
