いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)中央値に最も近いデータ中の値を取得する

 Googleスプレッドシートで、データサイズ(n)が奇数の場合は中央値そのものを、偶数の場合は中央値に最も近いデータ中の数値(小さい方の値と、大きい方の値の2通りが考えられます)を抽出する方法についてです。
 方法はいくつか考えられますが、ここではSMALL/LARGE関数によるものを試してみます。
  • SMALL/LARGE関数を使って、データとして存在する数値の中で中央値に最も近いものを取得できます。

手順

f:id:accs2014:20220118171350p:plain:w600:right

 画像ではB3:B12に10個の数値が並んでいます。
 これに対してE3セルにMEDIAN関数を入力し、中央値を求めようとしてます。
 さらにE4,E5セルには次のような2つの式を入力しています。

 E4,E5セル

=SMALL(B3:B12,ROUND(COUNT(B3:B12)/2))
=LARGE(B3:B12,ROUND(COUNT(B3:B12)/2))

 SMALL関数の方は、n個の数値のうちn/2番目に小さいものを求めています。ここではn=10に対しROUND(n/2)=5となりますので5番目に小さい値が求められます。つまり中央値(=5番目と6番目に小さい(または大きい)値の平均)に最も近い値のうち、小さい方の値が求められます。
 LARGE関数の方では同様に、中央値に最も近い値のうち大きい方の値が求められます。
 

f:id:accs2014:20220118173730p:plain:w550:right

 結果はこうなります。
 MEDIAN関数は中央値の定義どおり、5番目と6番目の値の平均値である70.5を返しています。
 SMALL関数は5番目に小さい値である67を、LARGE関数は5番目に大きい値である74を返しています。

 
 
f:id:accs2014:20220118171354p:plain:w550:right

 こちらでは式を変えず、B6セルのデータを削ることによりn=9のデータを評価しています。
 このようにデータサイズが奇数の場合はいずれも定義どおりの中央値が求められます。

 n=9に対しROUND(n/2)=5となるためこのような結果となります。