Excel 2019以降のバージョン(2021, Microsoft365)では、さまざまな関数が追加されました。
なかでも、数式入力セル以外の範囲まで拡張して結果を反映する、「スピル」という動作が加わったことで、多数の興味深い関数が追加されています。
SEQUENCE関数もそのひとつです。
このような変化に対応して、マイクロソフトオフィスの利用スキルを証明する資格「MOS」にも、来年新バージョンが登場します。「Microsoft 365 Apps」と呼ばれるバージョンです。
試験範囲には、新しい関数が多数含まれます。本記事の表題は、試験を実施するCertiportが公表した出題範囲の文言からとったものです。
RANDBETWEEN関数、SEQUENCE関数を用いて数値データを生成する
Objective Domains – MOS Microsoft 365 Apps | Certiport
Excel (Associate)の出題範囲より。和約は当店
この記事では
- RANDBETWEEN関数について
- SEQUENCE関数について
- この2つを組み合わせて使う
の3点を解説していきます。
MOS Microsoft 365 Apps の出題範囲については、別記事を参照してください。
RANDBETWEEN関数:乱数を生成する
RANDBETWEEN関数は、乱数を生成する関数です。
「いくつからいくつまで」と、乱数の範囲を指定できるので、RAND(ランダムな)-BETWEEN(間の)というわけですね。
=RANDBETWEEN(最小値,最大値)
※このスクリーンショットは、数式を行方向にオートフィルした状態の画面です。
小数点以下のある乱数を生成したい場合
RANDBETWEEN関数の結果は、整数のみです。
もし、小数部のある乱数を生成したい場合は、次のようにします。
例: 身長の数値サンプルを生成する 135.0cm~175.0cm 0.1cm刻み
最小値、最大値ともに10倍の数値を指定して乱数を生成したあと、10で割ることによって、目的の乱数を作っています。
広い範囲に一気に乱数を生成するには RANDARRAY関数
RANDBETWEEN関数は、そのセルに1つの乱数を生成する関数です。
多数の乱数を生成するには、式をオートフィルする必要があります。
オートフィルしないで、単一の数式で多数の乱数を一気に生成するのがRANDARRAY関数です。
※この関数は、Excel 365 Associateの出題範囲には入っていません。Expertに入っています。
=RANDARRAY([行数],[列数],[最小値],[最大値],[整数ならTRUE])
RANDARRAY関数は、このように、ひとつ数式を入力すると「スピル」されて、指定の範囲に一気に結果が出力されます。出力範囲内にデータが入っているとエラーになりますのでご注意ください。
RANDARRAY関数の場合は、結果が小数・整数どちらでも選べるようになっています。第5引数にTRUEを指定すると整数、FALSEを指定すると小数が出力されます。
RANDARRAY関数の小数部を丸める
小数部を丸めたい場合は、次のようにすると可能です。
=ROUND(RANDARRAY(1000,10,135,175,FALSE),1)
ROUND関数そのものはスピルしない関数ですが、スピルする関数の外側を別の関数で囲うと、結果がひとつひとつに適用されて、スピルして出力されます。おもしろいですね。
RANDARRAY関数の引数を省略する
RANDARRAY関数の引数は、こんなふうになってまして
=RANDARRAY([行数],[列数],[最小値],[最大値],[整数ならTRUE])
すべての引数が省略可能、ということです。なんだそれ!?
詳しくは載せませんが、すべての引数を省略して =RANDARRAY() とすると、どうも =RAND()と同じ動作をするようです。そのセルだけに、0以上1未満の乱数が生成されます。
SEQUENCE関数:連続した数値を生成する
SEQUENCE関数は、連続した数値を生成できる関数です。結果はスピルして出力されます。
=SEQUENCE(行数,[列数],[開始値],[増分])
第4引数は、現行のExcelの日本語訳では「目盛り」と表示されますが、こんな変てこな日本語訳で覚える必要はありませんので、当店では「増分」と表記したいと思います。
ちなみに英語版では
=SEQUENCE(rows,[columns],[start],[step])
と表示されています。
SEQUENCE関数の引数の省略
SEQUENCE関数は、行数以外の引数が省略できますので、このような使い方もあります。
この例では、「10行分の連続値」ということだけを指定しています。列数を省略すると1、開始値も省略すると1になり、増分も省略すると1になるようです。
小数を含む連続値を生成するには
SEQUENCE関数は、開始値・増分ともに小数を指定できますので、そのまま小数の連続値を生成できます。
RANDBETWEEN関数と、SEQUENCE関数を組み合わせるとどうなる
さて、ここで、最初にご紹介した、MOS Microsoft 365 Appsの「出題範囲」にもどります。
RANDBETWEEN関数、SEQUENCE関数を用いて数値データを生成する
Objective Domains – MOS Microsoft 365 Apps | Certiport
Excel (Associate)の出題範囲より。和約は当店
必ずしも、この2つの関数を組み合わせなさい、と受け取る必要はないようにも思いますが
組み合わせたらどうなる、ということは知っておく必要があると思います。
マイクロソフトサポートに載っている例としては、このようなものがあります。
=SEQUENCE(5,6,INT(RAND()*100),INT(RAND()*100))
このサンプルでは、RAND関数を使っていますが、RANDBETWEEN関数に置き換えるとこのようになるでしょう。
=SEQUENCE(5,6,RANDBETWEEN(0,99),RANDBETWEEN(0,99))
「ランダムな整数セットを作成する」とマイクロソフトサポートには書かれていますが、この数式によって生成される数値は、ランダムな整数とはいえないことにご注意ください。
初期値と増分をランダムに生成しているだけで、たとえば上の画像は「初期値38、増分2の整数セット」です。
38と2はランダムに生成されていますが、その結果をもとに規則的に生成されたものです。
ですから、仮にこの回答を求められるMOSの問題文があるとすれば
「5行6列のランダムな整数を生成してください」
ではなく
「5行6列の連続値を生成して下さい。開始値と増分は、ランダムにしてください」
になるんだろうと思うのです。
正直、組み合わせる意味がそんなにあるとは思えません
こんなわけで、SEQUENCE関数と、RANDBETWEEN関数を組み合わせる意味が、そんなにあるとは思えない、というのが、当店の感想です。特殊な用途なら、あり得ますけども。
乱数列を生成するのならば、素直にRANDARRAY関数を使うべきでしょう。
ですが、「問題文通りに正しく操作する」のがMOSの試験というものです。
果たして、実務力をつけることも目標になってるMOSの試験で、こんな問題が本当に出るんだろうか? という疑問もわきますが
もし、こういう問題が出た場合には、その通り組み合わせる必要があるでしょう。
コメント