目次
この短いチュートリアルでは、ExcelのSMALL関数について、その動作と、N番目に小さい数字、日付、または時間を見つけるためにそれを使用する方法について説明します。
ワークシートで最も小さい数値をいくつか見つけたい場合、Excelのソート機能を使えば簡単にできます。 データを変更するたびにソートをやり直すのは時間の無駄です。 SMALL関数を使えば、最小値、2番目に小さい値、3番目に小さい値などをすぐに見つけることができます。
エクセル SMALL関数
SMALLは、データセットの中でn番目に小さい値を返す統計関数です。
SMALL関数の構文には2つの引数があり、いずれも必須である。
SMALL(array, k)
どこで
- アレイ - 最小の値を抽出するための配列またはセル範囲。
- K - 最低値から何番目の値を返すかを示す整数,すなわちk番目の最小値。
本機能は、Office 365、Excel 2021、Excel 2019、Excel 2016、Excel 2013、Excel 2010以前のすべてのバージョンのExcelで利用可能です。
ヒント:条件を満たすk番目の最小値を見つけるには、ExcelのSMALL IF式を使用します。
エクセルでの基本的なSMALLの計算式
SMALL式の基本形は非常に簡単で、範囲と返すべき最小の項目からの位置を指定するだけである。
B2:B10の数値のリストで、3番目に小さい値を抽出したいとします。 計算式は、次のように簡単です。
=small(b2:b10, 3)
結果を確認しやすくするために、B列は昇順にソートされています。
SMALLファンクションについて知っておくべき4つのこと
以下の使用上の注意は、SMALL関数の動作をよりよく理解し、独自の数式を作成する際の混乱を避けるために役立ちます。
- 任意の 空白セル , テキスト 値、および 論理的 の値が TRUE と FALSE になります。 勢揃い 引数は無視されます。
- もし 勢揃い が1つ以上含まれています。 箇条書き の場合、エラーが返されます。
- がある場合。 スジ において 勢揃い 例えば、2つのセルに数字「1」が入っていて、SMALL関数が最小値と2番目に小さい値を返すように設定されている場合、両方のケースで「1」が返されます。
- の値の個数をnとすると、1.5倍。 勢揃い SMALL(array,1)は最小の値を返し、SMALL(array,n)は最大の値を選びます。
エクセルでSMALL関数を使う方法-数式例
さらに、ExcelのSMALL関数の基本的な使い方にとどまらない例を見てみましょう。
ボトム3、5、10などの値を探す
すでにご存知のように、SMALL関数はn番目の最小値を計算するように設計されています。 この例では、これを最も効果的に実行する方法を示します。
下の表で、下3つの値を求めたいとします。 そのために、1、2、3の数字を別々のセル(ここではD3、D4、D5)に入力します。 次に、E3に次の数式を入力し、E5までドラッグします。
=small($b$2:$b$10,d3)です。
E3では、D3の数値を使って最小の値を抽出する式で k 重要なのは、数式が他のセルに正しくコピーされるように、適切なセル参照を指定することです:絶対指定。 勢揃い と相対する。 k .
ランクを手入力するのが面倒な場合は、ROWS関数に レンジの拡大 を提供するためのリファレンスです。 k このとき、最初のセルは絶対参照(あるいはB$2のように行座標だけを固定)し、最後のセルは相対参照とする。
=small($b$2:$b$10, rows(b$2:b2))
その結果、数式が列の下にコピーされるにつれて、範囲参照が拡張されます。 D2では、ROWS(B$2:B2)で1が生成されます。 k D3では、ROWS(B$2:B3)が2となり、2番目に安いコストが得られる、というように。
5つのセルに数式をコピーするだけで、下の5つの値が得られます。
サムボトムN値
データセット中の最小のn個の値の合計を求めたい場合、前の例で示したようにすでに値を抽出していれば、最も簡単な解決策は次のようなSUM式になります。
=SUM(E3:E5)です。
また、SMALL関数とSUMPRODUCTを併用することで、独立した数式を作ることができます。
スンプロダクト(小型( 勢揃い , {1, ..., n }))今回のデータセットで下位3つの値の合計を求めるには、このような形の計算式になります。
=sumproduct(small(b2:b10,{1,2,3}))です。
SUM関数でも同じ結果になります。
=sum(small(b2:b10, {1,2,3}))
注)使用する場合は セル参照 については、配列定数ではなく k 動的配列をサポートするExcel 365では、SUM SMALLはどちらの場合でも通常の数式として機能します。
この処方の仕組み
通常の数式では、SMALLは範囲内のk番目の最小値を1つだけ返します。 この場合、k引数に{1,2,3}のような配列定数を与えて、最小値3の配列を返すように強制しています。
{29240, 43610, 58860}
SUMPRODUCT または SUM 関数は、配列内の数値を合計して合計値を出力します。 以上です。
INDEX MATCH SMALL式で最小のマッチを取得する。
最も小さい値に関連するデータを取得したい場合は、INDEX MATCHの定番であるSMALLとの組み合わせで検索を行います。
INDEX( return_array , MATCH(SMALL( ルックアップ_アレイ , n ), ルックアップ_アレイ , 0))どこで
- 戻り値_配列 は、関連するデータを抽出するための範囲である。
- ルックアップ_配列 は,最小の n 番目の値を探索する範囲である。
- N は注目する最小値の位置である。
例えば、コストが最も低いプロジェクト名を得るには、E3の計算式はこうなる。
=index($a$2:$a$10, match(small($b$2:$b$10, d3), $b$2:$b$10, 0))
ここで、A2:A10はプロジェクト名、B2:B10はコスト、D3は小さいものから順にランク付けされたものである。
この数式を下のセル(E4とE5)にコピーすると、最も安い3つのプロジェクトの名前が表示されます。
注意事項
- この方法は、重複のないデータセットではうまくいきますが、数値カラムに2つ以上の重複した値があると、ランキングに「同値」が生じ、間違った結果になります。 この場合は、もう少し洗練された式を使って同値を解消するようにしてください。
- Excel 365では、新しい動的配列関数の助けを借りて、この作業を行うことができます。 この方法は、はるかに単純であることに加えて、自動的にタイの問題を解決します。 詳細については、Excelで下位N個の値をフィルタリングする方法をご覧ください。
数式で数字を小さいものから大きいものへ並べ替える
Excelの並べ替え機能で数字を並べる方法は誰もが知っていると思います。 しかし、数式で並べ替えを実行する方法を知っていますか? Excel 365のユーザーは、新しいSORT機能を使って簡単な方法でそれを実行できます。 Excel 2019、2016および以前のバージョンでは、残念ながらSORTは機能しません。 しかし少し信じていれば、SMALLが助けに来てくれるでしょう :)
最初の例と同様に、ROWS 関数を拡張範囲参照で使用し、インクリメントします。 k を、数式がコピーされた各行で1ずつ加算します。
=small($a$2:$a$10, rows(a$2:a2))
最初のセルに数式を入力し、元のデータセットにある値の数だけセルまでドラッグします(この例ではC2:C10)。
ヒント:ソートするには 下行 の場合は、SMALL の代わりに LARGE 機能を使用します。
Excel SMALL 日付と時刻の計算式
日付や時刻も数値なので(Excelの内部システムでは、日付は連番、時刻は小数で保存されます)、SMALL関数を使えば、こちら側で余計な手間をかけずに処理することができます。
下のスクリーンショットにあるように、数字に使った基本的な計算式は、日付や時間にも見事に当てはまります。
=small($b$2:$b$10,d2)とする。
最も古い3つの日付を見つけるための小さな計算式。
最短3回を実現するSMALL式。
次の例では、SMALL関数を使って、日付に関するより具体的なタスクを実行する方法を紹介します。
今日または指定した日付に最も近い過去の日付を検索します。
日付のリストで、指定された日付より前にある最も近い日付を見つけたいとします。 これは、SMALL関数とCOUNTIFを組み合わせて使用することで実現できます。
B2:B10に日付のリスト、E1に目標日を指定すると、次の式で目標日に最も近い過去の日付が返されます。
=SMALL(B2:B10, COUNTIF(B2:B10, "<"&E1))
E1の日付の2つ前の日付、つまり前だけど1つ前の日付を抽出するには、次のような式になります。
=SMALL(B2:B10, COUNTIF(B2:B10,"<"&E1)-1))
過去の日付を検索する場合 今日的 の場合、COUNTIFの条件にはTODAY関数を使用します。
=SMALL(B2:B10, COUNTIF(B2:B10, "<"&TODAY()))
ヒント: 条件に一致する日付が見つからない場合にエラーを防ぐには、次のように IFERROR 関数で数式を囲むとよいでしょう。
=IFERROR(SMALL(B2:B10, COUNTIF(B2:B10,"<"&E1)-1)), "Not Found")
これらの公式の仕組み
一般的な考え方は、COUNTIFで対象日より小さい日付の数を数えることです。 そしてこの数は、SMALL関数がまさに必要としているものです。 k の議論になります。
この概念をよりよく理解するために、別の角度から見てみましょう。
もし2020年8月1日(E1における目標日)がデータセットに現れたとすると、それはリストの中で7番目に大きな日付となる。 したがって、それより小さい日付が6つある。 つまり、6番目に小さい日付は目標日に最も近い前の日付ということになる。
そこで、まず、E1の日付より小さい日付がいくつあるかを計算します(結果は6)。
COUNTIF(B2:B10, "<"&E1)
そして、そのカウントをSMALLの第2引数に突っ込みます。
=small(b2:b10, 6)
1つ前の日付(この例では5番目に小さい日付)を取得するために、COUNTIFの結果から1を引きます。
Excelで一番下の値を強調表示する方法
Excel の条件付き書式設定で表の最小の n 値を強調表示するには、組み込みの上/下オプションを使用するか、SMALL 式に基づく独自のルールを設定します。 前者の方法はより迅速かつ簡単に適用できますが、後者の方法はより制御性と柔軟性があります。 次の手順では、独自のルールを作成する方法について説明します。
- 下の値を強調したい範囲を選択します。 今回はB2:B10に数字があるので、それを選択します。 もし行全体を強調したい場合は、A2:B10を選択してください。
- について ホーム タブで スタイル グループをクリックします。 条件付き書式設定 > 新ルール .
- での 新しい書式ルール ダイアログボックスで 数式を使用して、どのセルをフォーマットするかを決定します。
- での この式が真である場合の値のフォーマット ボックスで、次のような数式を入力します。
=B2<=SMALL($B$2:$B$10,3)です。
ここで、B2はチェックする数値範囲の左端のセル、$B$2:$B$10は範囲全体、そして3は n の値を強調する。
数式では、参照の種類に注意してください。一番左のセルは相対参照(B2)、範囲は絶対参照($B$2:$B$10)です。
- をクリックします。 フォーマット ボタンをクリックして、好きな形式を選んでください。
- OKを2回クリックして、両方のダイアログウィンドウを閉じます。
完了!B列の下3つの値がハイライトされています。
詳しくは、「数式に基づくExcelの条件付き書式設定」をご覧ください。
ExcelのSMALL関数が動作しない
このように、ExcelでSMALL関数を使うのはとても簡単で、難しいことはほとんどありません。 計算式がうまくいかない場合、ほとんどの場合、#NUM!エラーになりますが、これは次のような理由が考えられます。
- アレイ が空であるか、あるいは1つの数値が含まれていない場合。
- があります。 k の値が 0 より小さいか (ちょっとしたタイプミスがトラブルシューティングに何時間も費やすことになります!) あるいは配列の値の数を超えている場合です。
以上、エクセルでSMALL式を使い、データの底辺の数字を見つけ、強調する方法でした。 この関数が役に立つ他のシナリオをご存知でしたら、ぜひコメントで共有してください。 読んでくださってありがとうございます!来週も私たちのブログでお会いしましょう
練習用ワークブック(ダウンロード
Excel SMALL 計算式の例 (.xlsx ファイル)