LARGE/SMALL分類:統計 2009.02.06
LARGE / SMALL関数は、データの中から指定した<順位>番目を取り出す関数です。テストデータや身長データなどを昇順・降順に取り出す、といった用途が考えられます。
LARGEの機能と構成
機能データの中から指定した<順位>番目に大きな値を返す。
構成:=LARGE(範囲(配列),順位)
引数
範囲(配列)には、対象となるデータが入力されている配列、又はセル範囲を指定します。
順位は、範囲(配列)の中から返したい順位を指定します。
LARGE関数は数式をコピーし連続で使用することが考えられるため、セル範囲を指定の場合は絶対参照にする事をお奨めします。
指定したデータ範囲内の文字列・論理値(TRUE/FALSE)、空白のセルなどは無視され、数値データのみがLARGE関数の対象となります。
引数を指定する例
セル[A1:A10]から3番目に大きなデータを取り出す:=LARGE($A$1:$A$10,3)
[DataArea]と名前を定義したセル範囲から3番目に大きなデータを取り出す:=LARGE(DataArea,3)
配列:=LARGE({2,3,4}+{3;6;9},3)
この場合、(2+3),(2+6),(2+9),(3+3),(3+6),(3+9),(4+3),(4+6),(4+9)のように考える。結果は11になる。
SMALLの機能と構成
機能データの中から指定した<順位>番目に小さな値を返す。
構成:=SMALL(範囲(配列),順位)
引数
範囲(配列)には、対象となるデータが入力されている配列、又はセル範囲を指定します。順位は、範囲(配列)の中から返したい順位を指定します。
SMALL関数は、数式をコピーし連続で使用することが考えられるため、セル範囲を指定の場合は絶対参照にする事をお奨めします。
指定したデータ範囲内の文字列・論理値(TRUE/FALSE)、空白のセルなどは無視され、数値データのみがSMALL関数の対象となります。
引数を指定する例
セル[A1:A10]から3番目に小さなデータを取り出す:=SMALL($A$1:$A$10,3)
[DataArea]と名前を定義したセル範囲から3番目に小さなデータを取り出す:=LARGE(DataArea,3)
配列:=SMALL({2,3,4}+{3;6;9},3)
この場合、(2+3),(2+6),(2+9),(3+3),(3+6),(3+9),(4+3),(4+6),(4+9)のように考える。結果は7になる。
串刺し計算
LARGE / SMALL関数は一枚のワークシートの中だけでなく、複数のワークシートに跨った計算も可能です。その代表的な計算法が「串刺し計算」です。串刺し計算とは、3-D参照を利用して連続したワークシートの同じセル番地を、串を刺すように計算することです。下の図の計算式は次になります。
セル[A1:A10]の串刺し計算例
=LARGE(Sheet1:Sheet3!A1:A10,3)=SMALL(Sheet1:Sheet3!A1:A10,3)
※シート名の後の「!」はワークシート参照の記号で、他シート参照の際は必ず付け加えます。
LARGE / SMALL関数の第1引数は範囲になっています。単一セルの串刺しは範囲と見なされない為、=LARGE(Sheet1:Sheet3!A1,1)に指定すると=LARGE(A1,1)を指定した場合と同じく、#NUM!のエラーが発生します。
そのため、LARGE / SMALL関数は上記の例のようにセル範囲の串刺し計算のみ可能となります。
式の挿入方法
1. 串刺し計算を行うセル範囲を入力。カーソルをセル範囲の前に移動。
2. 串刺し計算を行う最初のワークシートを選択し、[Shift]を押しながら最後のワークシートを選択する。
3. 数式にシート名が加わったのを確認し[Enter]を押す。
※下図はSUM関数での串刺し計算例ですが、LARGE / SMALL関数でも手順は同じです。
LARGE / SMALL関数の応用
LARGE / SMALL関数の応用として、LARGE / SMALLとIFを用いた配列数式を取り上げます。配列数式についての詳細はこちらをご覧下さい。→配列数式
下図の数式を見て下さい。数式の前後に「{}」がついています。これが配列数式の特徴になります。数式バーに数式を入力後、[Shift]+[Ctrl]を押しながら[Enter]を押すことで、この「{}」が挿入されます。
下図の配列数式は、IF関数で1級者の値(点数)を返し、その中で2番目に大きな点数及び2番目に小さな点数を返しています。
これが配列数式でなく=LARGE(E3:E9,2)の場合だと、1級者・2級者を含む全体の中での、2番目の点数が返ります。=SMALL(E3:E9,2)の場合も同様です。
※IF関数の第3引数を省略すると、論理式がFALSEだった場合にFALSE(文字列)が返る。
LARGE / SMALL関数はデータ中の文字列は無視される。