LARGE関数、SMALL関数、そしてMAX関数、MIN関数をうまく使うと、いろいろな計算ができます。MAXとMINは、結構有名な関数ですよね。ある範囲で、MAXで指定すると、その中の最大値がかえってきます。MINは、最小値ですね。最大値については、標準ツールバーにあるΣマークを押せば、同様の計算がされます。こちらを使われていらっしゃる方も多いでしょう。この辺りは、基本的なものになります。さて、ご紹介は、LARGEとSMALLです。これらは、範囲の中で○番目に大きい(小さい)数字が何か?を出してくれる関数です。同様の関数には、RANKと言う関数もありますが、LARGE、SMALLとはちょっと異なっています。
このLARGE関数、私はRMS(相対的マーケットシェア)を計算するのに使っています。RMSとは、ビジネススクールなどでは誰もが知っている考え方で、マーケットシェアを、全体を100%ととして考えるのではなく、競合他社との相対的な位置づけでどのポジションにいるかを表す指標です。これは、市場規模がわからなくても、上位数社の規模がわかれば、大体の業界マップがわかる、という便利な考え方で、いろいろな分析で用いられています。数字自体は、1位の数字は2位で割り、2位以下の数字は1位のもの対してどれくらいか、という計算をします。この計算を、一発でできんかな?と考えて、LARGE関数を使うことを思い立ったのですね。
=IF(F3/MAX($F$3:$F$13)=1,F3/LARGE(F3:F13,2),F3/MAX($F$3:$F$13))
これは、F3からF13までに11社の数字が入っていると考えてください。上にあげたのはG3に入れた数式です。F3からF13において、最大の数字でF3-F13自身を割り算し、それがもし1の場合には、二番目に大きい数字で割る、という式です。たいしたことはないですが、一発でRMSが計算されます。
上で、ちらっとRANK関数についても触れましたが、RANK関数とは、範囲の中で、何番目にその数字大きいかということを返してくれる関数です。LARGEと非常に似ていると言えますね。ただ、RANKとLARGEとは、使い勝手が、ほんのちょっと違っています。例えば、以下ですが、
数字 RANK順位
1 9
3 8
1 9
4 5
4 5
8 2
4 5
7 4
10 1
8 2
とRANKの場合は同じ数字の場合、同じ順位になります。だから、例えばこの数字で6番目に大きい数字を知りたいと思っても、RANKが6の数字を引っ張ってこようとしてもうまく行かないわけです。なぜなら、RANKが6というデータがないからですね。こういうとき、LARGE関数が役立つわけです。LARGEの場合は、5番目、6番目、7番目と指定しても、全て4が返ってきます。うまく使いこなせると、便利ですね。
ちなみに、上で例に上げた数字ですが、前に紹介した乱数で作りました。INT(RAND()*10+1)で、1から10までの間の乱数を作り、整数部分を取り出したものです。
このLARGE関数、私はRMS(相対的マーケットシェア)を計算するのに使っています。RMSとは、ビジネススクールなどでは誰もが知っている考え方で、マーケットシェアを、全体を100%ととして考えるのではなく、競合他社との相対的な位置づけでどのポジションにいるかを表す指標です。これは、市場規模がわからなくても、上位数社の規模がわかれば、大体の業界マップがわかる、という便利な考え方で、いろいろな分析で用いられています。数字自体は、1位の数字は2位で割り、2位以下の数字は1位のもの対してどれくらいか、という計算をします。この計算を、一発でできんかな?と考えて、LARGE関数を使うことを思い立ったのですね。
=IF(F3/MAX($F$3:$F$13)=1,F3/LARGE(F3:F13,2),F3/MAX($F$3:$F$13))
これは、F3からF13までに11社の数字が入っていると考えてください。上にあげたのはG3に入れた数式です。F3からF13において、最大の数字でF3-F13自身を割り算し、それがもし1の場合には、二番目に大きい数字で割る、という式です。たいしたことはないですが、一発でRMSが計算されます。
上で、ちらっとRANK関数についても触れましたが、RANK関数とは、範囲の中で、何番目にその数字大きいかということを返してくれる関数です。LARGEと非常に似ていると言えますね。ただ、RANKとLARGEとは、使い勝手が、ほんのちょっと違っています。例えば、以下ですが、
数字 RANK順位
1 9
3 8
1 9
4 5
4 5
8 2
4 5
7 4
10 1
8 2
とRANKの場合は同じ数字の場合、同じ順位になります。だから、例えばこの数字で6番目に大きい数字を知りたいと思っても、RANKが6の数字を引っ張ってこようとしてもうまく行かないわけです。なぜなら、RANKが6というデータがないからですね。こういうとき、LARGE関数が役立つわけです。LARGEの場合は、5番目、6番目、7番目と指定しても、全て4が返ってきます。うまく使いこなせると、便利ですね。
ちなみに、上で例に上げた数字ですが、前に紹介した乱数で作りました。INT(RAND()*10+1)で、1から10までの間の乱数を作り、整数部分を取り出したものです。