簡単なかけ算が作れるようになったら、次はバラ桁のかけ算問題を作成してみましょう。
日商系は揃い桁で弾きやすいのが特徴ですよね。でも全珠連系は桁が揃っていない。実法合わせた桁数は一緒なんですが、作問が面倒なんです。
今回は実法合わせて6桁の問題を作りたいと思います。ではどのように作るといいでしょうか?少し考えてみてください。
ではまず、自分の思った通りのやり方でトライしてみてください。上手くいったらそれで良し。
もし上手くいかなかった場合は私のやり方を参考に再チャレンジしてみましょう。
実法合わせて6桁なので、出題パターンは4×2桁、3×3桁、2×4桁ですね。実のみに注目すると4桁、3桁、2桁です。これをどの程度の割合で出現させたいかを考えてください。
私は全て均等になるように出題したいと思います。全15題で5題ずつですね。
問題数の数だけ乱数を発生させ順位をつけてみましょう。順位はRANK関数を使います。RANK(このセルの,この範囲での順位を,点数の高い順で〈もしくは低い順で〉)という式なので、私の場合はC3の値を、C3~C17の数字と比べた場合の順位を、降順で知りたい、となります。
F3に打ち込むのは =RANK(C3,C3:C17,0) です。最後の0は省略してもいいので、下図では入力していません。ここを0以外の数字にすると昇順に変わります。今回はどちらでも大丈夫です。
1つ1つ設定するのが面倒な人は、参照範囲(今回はC3:C17)を絶対値に変更(C3:C17の上でF4キーを押す)してからオートフィルでコピーしましょう。
はい、ここでエラーチェックです。これでは狙った割合で出題されないんです。どこがおかしいか探してください。
見つかりましたか?そうなんです、3位と8位が2つあるのです。同位があるとマズいんですね。
ではどうすればよいでしょうか。ここも考えてから次を見てみましょう。
同じ数字が出ないように乱数の桁を上げてもいいですが、それでも同じ数字が100%でない訳ではないので、前回やったROW関数を使って回避していきます。
ROW関数は行番号を返してくれるんでしたよね。こんな感じです。
乱数自体は2番と4番、5番と13番、11番と12番が同じ数字になっています。それを行番号に0.01かけた数値をたすことで同位にならないようにしています。これでやっと前準備完了。ここからが本番です。
それでは次はIF関数を使ってパターン分けしていきます。
順位が1~5の時は4×2桁、6~10の時は3×3桁、11~15の時は2×4桁とします。
ここで使うのはIF関数です。とても便利で汎用性が高いのでぜひ覚えておきましょう。
IF(もしこの条件を満たしていたら、こうやって、この条件じゃなければこうやってね)という式を作ります。便利なのが、条件をたくさん(エクセル2010なら最大64個まで)繋げられることです。
IF(もしこの条件を満たしていたら、こうやって、IF(もしこの条件じゃなくてもこの条件に合っていれば、こうやって、IF(もしこれでもダメならこの条件に合う場合は、こうやって、IF(… という形でたくさん増やしていけるのです。
今回の場合は =IF(E3<6,RANDBETWEEN(1000,9999),IF(E3<11,RANDBETWEEN(100,999),RANDBETWEEN(10,99))) と打ち込みます。
頭がパンクしそうな人はコピペで対応してもらって、E3のところだけ自分のセル番号に変えてもらえばなんとかなりますが、一応説明はしますね。
長いと嫌になるので、乱数の部分を『あ』『い』『う』に直してみます。
=IF(E3<6,『あ』,IF(E3<11,『い』,『う』)) 大事な部分はこれだけです。
エクセル語を日本語に直してみます。
もし、順位が1~5の時は(E3が6より小さい時は)、『あ』を出力してね。
でももしそうじゃなくで順位が6~10の時は(E3が11より小さい時は)『い』を出力してね。
どっちでもない時は(順位が11~15の時は)『う』を表示してね。
今回は『あ』を4桁の乱数である RANDBETWEEN(1000,9999)、『い』を3桁の乱数である RANDBETWEEN(100,999)、『う』を2桁の乱数である RANDBETWEEN(10,99) にしました。
実が決まれば法は自ずと決まりますね。せっかく覚えたのですから、これもIF関数でやってみましょうか。
やりやすいように作業列を増やして、LEN関数で文字数をカウントしておきましょう。
その上で、実が4桁ならば法は2桁、実が3桁ならば法は3桁、実が2桁ならば法は4桁、という条件を付けていきます。
考えることにも疲れてきたでしょうから、今回は最初に打ち込み例をお見せします。
余計な数式説明は一部非表示にしてあります。これも式が長くてイヤに感じるかもしれませんが、先ほどと同じ構造です。
=IF(I3=4,『う』,IF(I3=3,『い』,『あ』)) です。
『あ』『い』『う』がそれぞれ何に該当するかは上に書きましたので省略します。
これもエクセル語を日本語に直して『あ』『い』『う』も言い換えて書くとこうです。
もし、I3(アイ3)が4桁の時は2桁の乱数を、3桁の時は3桁の乱数を、それ以外なら(2桁の時)4桁の乱数を出してね。
ここまでいけば、自分の作った型にリンクして(=セル番号と打って)完成です。