未分類

作問3

覚悟はいいかな?

それではここからが本番です。

このくらいできるようになれば、かなり広範囲にわたって作問が可能です。

ただし、初心者の人は休みの日に1日潰す覚悟で取り組んでください。誰もがそうやって悩んで苦労してスキルを手に入れています。ラクで便利を追及してばかりではダメだってこと、そろばんの先生ならば分かるハズ!?さぁ、やってみよう。

 

2桁の均等数字
 均等数字は日商検定でも採用している、非常にバランスの良い出題方法ですね。0~9までの数字が縦でも横でも重ならないようになっています。
 これができると作問の質が一気に高まります。まずは1つずつ手順を説明します。
2桁10口の均等数字で作られた問題(たし算)だと「?95」、3桁だと「?995」という答えになってしまいます。それは当然ですよね。順番はどうであれ0~9が1回ずつ出てくればたしたら45です。頭数のみ0はあり得ないので他の数に置き換わっていますが、基本的に上記の理由で10口の完全均等数字での出題はできません。
実際打ち込む前に手順を把握しておこう
 まずは10の位の数から決めていきます。
 手順① 最初の数字になり得る選択肢はどれ?
  0はありえないので、123456789のうちのどれかですね。
 手順② 選択肢の数は?
  最初の数字は選択肢が9こ。2列目は8こ。3列目は7こになっていきます。最後の10口目は選択肢がなくなりますので、バランスよく1列目~4列目の数字から選ぶようにしましょうか。そうすれば85の下の数字が86、のように好ましくない出題を避けることができます。もちろん自分で作っているので後から変更も可能です。
 手順③ 左から何番目の数にしようか?
  ランダムで出題するために必要な仕掛けです。自分で選ばずに、パソコンに選んでもらいましょう。やり方は簡単です。乱数を発生させて、123456789の左から何番目の数字を抜き出す、といういうように設定します。
 手順④ 選んだ数字はコレ
 ①~③のやり方で、結果どの数字が選ばれたのかを表示します。
今回は手順を4つに分けましたが、慣れてくれば数式を組み合わせて1つのセルで完結させることも可能です。ただし細かく分けた方が分かりやすくなるので、今回は1つ1つ別のセルに数式をいれていきましょう。
手順毎の数式を説明します
 手順①~④を1セットとして、この作業を繰り返すことで均等数字を作っていきます。
 まずは1セット目(1列目)の説明から。
①最初の数の10の位、選択肢は?
最初の数の選択肢は1~9まで全ての可能性があり得るので123456789と数字を打ち込んでおきます。ここはこれだけ。
②選択肢の数は?
1~9まで9つあるので9と打ち込んでもいいのですが、2列目からも8、7、6と打ち込むのが面倒なので数式で一気に処理してもらいましょう。
=LEN(E3)と打ち込みます。
 LEN関数は何文字あるのかを数えてくれます。LENの後ろのカッコの中に、先程打ち込んだ123456789の場所を指定しましょう。私の場合はE3という場所ですね。
③左から何番目の数にしようか?
これは123456789の左から何番目の数にするのかをランダムにするため、前に覚えたRANDBETWEEN関数を使って決めていきます。最小値は1、最大値は②のセルを指定しましょう。私の場合はE4です。
 =RANDBETWEEN(1,E4) と打ち込みます。
④選んだ数字はコレ
 左から何番目の数にするかはパソコンが決めてくれるので(今回は5番目になっていますね)、実際それが123456789のどの数字になるのかを抜き出します。使うのはMID関数です。この関数は「~のセルの、左から~番目を、~文字抜き出す」という3段階で指定しますので、 MID(①のセル、③のセル、1文字)となります。
 =MID(E3,E5,1) と打ち込みます。
これを繰り返すだけでほとんど完成です
修正1
1セット目が出来上がりました。全部入力していってもいいのですが、面倒なので1セット目をコピーして下に貼り付けしてください。
 それが2セット目になるのですが、1カ所修正が必要です。それは2セット目の①、2列目の10の位の数、選択肢は?の部分です。
 ここで123456789はおかしいですよね。59の下が同じ59にならないようにするのが均等数字です。選択肢から1列目の数を除外しなくてはいけません。使うのはREPLACE関数です。
 この関数は「~のセルの、左から~番目の、~文字を、~に置き換える」という4段階で指定しますので、REPLACE(1セット目の①のセル、1セット目の③のセル、1文字、消す)となります。尚、消す時は”(ダブルクォーテーション)”(ダブルクォーテーション)と打ちましょう。ダブルクォーテーションは「Shift+2」で入力できます。
 =REPLACE(E3,E5,1,””) と打ち込みます。
修正2
 それでは出来上がった2セット目以降はドラッグ、もしくはコピペして10セット目まで完成させてください。最後の最後でエラーがでますね。当然です。10の位は9列分選んだら選択肢がなくなります。10セット目の手順①のところです。
 ここでは1列目~4列目の数字のどれかを選ぶことにしましょう。&でつないでもいいのですが、せっかくなので関数を覚えてみましょう。使うのはCONCATENATE関数です。この関数は指定したセルを繋いでくれます。「このセルと、このセルと、このセルと、…、このセルをつなぐ」と指定します。今回はCONCATANATE(1セット目の④、2セット目の④、3セット目の④、4セット目の④)となります。
 =CONCATANATE(E6,E10,E14,E18) と打ち込みます。
修正3
 最後に実際どのようになっているのかをB列に表示してみましょう。B3に「=E6*10」、B4に「=E10*10」と打ち込んでも良いのですが、少々面倒です。参照するセルが4つ飛びになっているのでオートフィルでも上手くいかないですね。しかしここも関数で解決です。
 合わせ技でやってみましょう。つかうのは
 ・INDIRECT関数…セルを参照する
 ・ROW関数…セルの行番号を調べる の2つです。
「=A1」と=INDIRECT(“A1”)は一緒ですが、INDIRECTの方が少し応用が効いて使いやすいです。
=ROW()とカッコに何も入れないと入力しているセルの行番号を返してくれます。
 それではやっていきましょう。
 参照したい列はE列に集中していますね。ですから列は”E”とします。
 また、手順を4つに分けて1セットにしましたので(4つの行を使ったので)、ROW()*4とします。今回はB3に1つ目を表示したいので、B3に「 =ROW()*4 」と打ち込むと、B3=3行目×4で「12」という数字がでます。
 これを組み合わせるとINDIRECT(“E”&ROW()*4)となりE12という場所が指定されることになります。でも本当は E6 という場所を参照したいので6をひきます。
 =INDIRECT(“E”&ROW()*4-6) です。
 今回は10の位の数だということを分かりやすくするために10をかけて、
 =INDIRECT(“E”&ROW()*4-6)*10 としています。
 これをオートフィルで一気にコピーしてください。均等数字の10個の数字が完成したはずです。
 一応最後に全体の式を確認しておきたいと思います。
 先程と選ばれた数字が変わっていますが、数式の確認用としてご覧ください。
残りは宿題です
 これでF9キーを押せば均等数字を無限に生成できるようになりました。まぁまだ10の位だけですが・・・
 しかし1の位もやり方は似たようなものです。自分で工夫してみてください。恐らく何度も壁にぶち当たるでしょうが、その時に何度も調べて挑戦を繰り返すことでスキルが上がっていきます。
 ポイントは0も含まれることと、10の位も参照しなくてはいけないので、2重に置き換えが発生する状態をどう処理するのか、ということですね。
 もし気が向いたら続きも書いていくかもしれませんが他にもっと良い方法があるかもしれません。専門家でもなんでもない素人の独学です。それでも誰かの役に立てればうれしいです。
均等数字が全ての自作教材のベース
 私は桁と口数を指定すれば(今のところ10桁15口まで)均等数字が自動作成されるようにプログラムを組みましたが、自作教材のベースは全てこれを使っています。マクロを組み合わせれば自分でほとんどの問題が作成可能です。でもみんなが作問できるようになれば教材の出版社が潰れてしまいますね!
 自動で無限生成できる問題はとても重宝しますのでぜひ挑戦してもらいたいのと、完全にできるようにならなくても次につながる勉強になるので、エクセルの関数との戦いに挑んでみてください。