わえなび ワード&エクセル問題集

当サイトはWordとExcelの実力を鍛える最高水準の特訓問題集です。リンクを張るのは自由です。みんなで勉強しましょう!

算数の学習プリントをExcelのランダム関数で作ると問題と答えが保存されない問題

小学校の算数で最も基本的な勉強は、同じ計算を繰り返して身体で覚える計算ドリルです。計算のプリント「だけ」をやっても論理的思考力が身につかないことは言うまでもありませんが、基礎的な計算ができない人に論理的思考ができるわけがないのです。現在では百マス計算や公文式のように、数字を変えて反復練習をする勉強方法が有効であることが知られています。

ところで、Excel2007以降では「RANDBETWEEN」という関数が標準で使えるようになりました。ネット上でもこの関数を使って計算ドリルを作る方法が多数紹介されています。しかし、ランダム出題には1つだけ問題があります。それは、問題と答えが保存できないということです。コロコロと問題が変わってしまうので、後で答え合わせをしようとしてもその問題がExcelに保存されていないのです。

そこで、小学生の敵(?)であるRAND関数・RANDBETWEEN関数を用いて学習プリントを作成した場合、出題した計算問題と答えを一時的に保存する方法について解説します。

f:id:waenavi:20190801161128j:plain

 

目次

1.関数の復習(百マス計算ランダム出題)

問題

次の図のように、足し算の百マス計算用紙を作成しなさい。ただし、縦横に並べる数字は0~9とする。

f:id:waenavi:20190801132956j:plain

解説

(1)RANDBETWEEN関数

まずは、RAND関数・RANDBETWEEN関数の復習をしましょう。

A列~M列、1~13行目を方眼紙の形にして、セル範囲B2:L12で11行11列の正方形の表を作ります。さらに、フォントサイズを大きくして、教科書体(HGP教科書体など)にします。

f:id:waenavi:20190801132712j:plain

 

セル範囲C2:L2とB3:B12に「=randbetween(0,9)」と入力します。RANDBETWEEN関数は整数をランダムに出力する関数で、括弧の中に最小値と最大値を指定します。(0,9)の場合は0~9の整数です。

f:id:waenavi:20190801132831j:plain

 

(2)RAND関数・RANK関数

RANDBETWEEN関数を用いた場合、それぞれのセルで0~9の整数を10%の確率で出力するので、0~9の整数が揃うとは限りません。また、同じ数字が出てきてしまいます(約99.96%の確率)。

重複しない数値を並べるにはRANKとRANDを併用する方法が最も簡単です。セル範囲C1:L1とA3:A12に「=rand()」と入力します。RAND関数は0以上1未満の小数をランダムに出力する関数です。この小数のことを乱数Random Numbers)といいます。乱数は、画面には小数第2位くらいしか表示されていませんが、内部的には小数第15位まで計算されていますので、これらの小数が重複する確率は無視できるほど小さいです(約0.0000000000045%=宝くじ1等当選確率の100万分の1以下)。

f:id:waenavi:20190801133550j:plain

 

RANK関数を用いて順位を求めます。順位は1~10となりますので、1を引きます。

  • セルC2:=RANK(C1,$C$1:$L$1)-1
  • セルB3:=RANK(A3,$A$3:$A$12)-1

f:id:waenavi:20190801133754j:plain

 

セル範囲C2:L2とB3:B12の文字の色を白色にします。

f:id:waenavi:20190801134201j:plain

 

(3)F9キー

数式タブの「再計算実行」でRAND関数が再計算されて、数字が変わります。再計算実行のショートカットキーは[F9]キーです。[F9]キーを連打しながら印刷することによって、大量の百マス計算用紙を作ることができます。

f:id:waenavi:20190801134450j:plain

 

RAND関数もしくはRANDBETWEEN関数は再計算をすることはできますが、過去に表示した数字を記憶しているわけではないので、元に戻すことはできません。つまり、出題した問題を保存できないのです。過去に作成したプリントをデータで保存できません。百マス計算のように答えを保存する必要がないプリントであれば構いませんが、後で採点をするプリントの場合、答え合わせをすることができません。

 

2.答え合わせが可能な計算ドリル

問題

2桁同士の引き算30問の計算プリントを40枚作成しなさい。ただし、問題に使用する数は10~99の整数とし、問題が重複してもよい。

f:id:waenavi:20190801142419j:plain

 

解説

(1)問題と答えを保存する

学校によって授業のスピードは異なると思いますが、標準的なスピードの場合、小学3年の1学期(夏休み)までに2桁同士の足し算・引き算が「暗算」で計算できなければならないそうです。確かに、小学3年なら掛け算も割り算も習っていますから、2桁同士の加減くらい暗算でさっさとやってほしいものです。これは、夏休み中に特訓するしかありません!!!

しかし、前述のようにRAND(RANDBETWEEN)を使うだけでは問題が保存されず、答え合わせをするときに電卓を使うという残念なことになってしまいます。そこで、次の図のように問題と答えを保存する表を用意します。

  • 管理番号・・・問題用紙の枚数(1~40)
  • 問題番号・・・設問の番号(1~30)
  • 問題ID・・・管理番号*1000+問題番号で生成する識別番号(1001~40030)

f:id:waenavi:20190801141920j:plain

 

セルC2、D2、F2、G2に数式を入力します。引き算の最初の数(A)は10~99のランダムで良いですが、引き算の後の数(B)は答えがマイナスにならないように10~D2としなければなりません。

  • セルC2:=A2*1000+B2
  • セルD2:=RANDBETWEEN(10,99)
  • セルF2:=RANDBETWEEN(10,D2)
  • セルG2:=D2-F2

f:id:waenavi:20190801142549j:plain

 

A1:G2をコピーして、別の新しいシートに貼り付けます。このコピーが重要です!!!コピーしたシートで、A2~A31に「1」を入力します。また、B2~B31に、1~30の連番を入力します。

f:id:waenavi:20190801143341j:plain

 

セルA32、B32にそれぞれ数式を入力します。

  • セルA32:=A2+1
  • セルB32:=B2

f:id:waenavi:20190801143754j:plain

 

この数式をA33:B1201にコピーします。30問のプリントを40枚作るので1200行です。

f:id:waenavi:20190801143909j:plain

 

C2:G2をC3:G1201にコピーします。これで1200問完成です。

f:id:waenavi:20190801144312j:plain

 

しかし、このままでは再計算するたびに問題と答えがコロコロと変わってしまいます。A列~G列をコピーして、そのまま「値」の貼り付けをします。これによって計算式を消します。このシートを「保存用1」というシート名にしたとします。

f:id:waenavi:20190801144541j:plain

 

(2)保存した問題と答えを出力する

次の表を入力します。セルC2の番号とは管理番号のことです。

f:id:waenavi:20190801144918j:plain

 

B列とI列の問題番号を選択します。セルの書式設定で、「(0)」のユーザー定義表示形式を設定します。これでカッコが付きます。

f:id:waenavi:20190801145129j:plain

f:id:waenavi:20190801145108j:plain

 

セルC5、E5、G5、J5、L5、N5にそれぞれ数式を入力します。VLOOKUP関数で、問題ID「$C$2*1000+$B5」を検索値として問題を表示します。

  • セルC5:=VLOOKUP($C$2*1000+$B5,保存用1!$C:$G,2,0)
  • セルE5:=VLOOKUP($C$2*1000+$B5,保存用1!$C:$G,4,0)
  • セルG5:=VLOOKUP($C$2*1000+$B5,保存用1!$C:$G,5,0)
  • セルJ5:=VLOOKUP($C$2*1000+$I5,保存用1!$C:$G,2,0)
  • セルL5:=VLOOKUP($C$2*1000+$I5,保存用1!$C:$G,4,0)
  • セルN5:=VLOOKUP($C$2*1000+$I5,保存用1!$C:$G,5,0)

f:id:waenavi:20190801145524j:plain

 

管理番号を変えることによって、40枚分の問題用紙が作れます。

f:id:waenavi:20190801145633j:plain

 

(3)解答の表示と非表示

印刷するときは答えを非表示にします。セルC3にプルダウンリストの入力規則を設定します。

  • セルC3:あり,なし

f:id:waenavi:20190801145840j:plain

 

G列とN列に条件付き書式を設定して、セルC3が「なし」の場合、文字の色を白色にします。条件式は「=$C$3="なし"」です。

f:id:waenavi:20190801150006j:plain

 

「あり」の場合は答えが表示され、「なし」の場合は答えが非表示になります。

f:id:waenavi:20190801150047j:plain

 

(4)スピンボタン

最後に管理番号をスピンボタンで増減できるようにします。開発タブが表示されていなければ表示して、フォームコントロールのスピンボタンを挿入します。

f:id:waenavi:20190801150259j:plain

 

右クリック、コントロールの書式設定で、現在値=1、最小値=1、最大値=40、変化の増分=1、リンクするセル=$C$2とします。

f:id:waenavi:20190801150430j:plain

 

さらに、「セルに合わせて移動やサイズ変更をしない」にチェックを入れ、「オブジェクト(=スピンボタンのこと)を印刷する」のチェックを外します。

f:id:waenavi:20190801151122j:plain

 

これで管理番号が1ずつ増えたり減ったりしますので、40枚を連続で印刷することができます。

f:id:waenavi:20190801150534j:plain

 

(5)印刷

印刷するときは印刷範囲を設定するとともに、縦1ページ、横1ページの縮小印刷にします。

f:id:waenavi:20190801150736j:plain

 

管理番号を印刷しておけば、後で答え合わせをすることも可能です。

f:id:waenavi:20190801151311j:plain

f:id:waenavi:20190801151340j:plain

 

3.2桁同士の足し算と引き算

問題

2桁同士の足し算と引き算をランダムに混ぜた30問の計算プリントを40枚作成しなさい。ただし、問題に使用する数は10~99の整数とし、問題が重複してもよい。

f:id:waenavi:20190801154011j:plain

 

解説

最初に作った表で、もう1行増やします。

f:id:waenavi:20190801151831j:plain

 

セルE3に次の数式を入力します。RANDBETWEEN(1,2)で1または2をランダムで出力し、CHOOSE関数またはIF関数によって(1,2)を(+,-)に変換します。これによって、プラスとマイナスをランダムで出力できます。

  • セルE3:=CHOOSE(RANDBETWEEN(1,2),"+","-")
  • 【別解】=IF(RANDBETWEEN(1,2)=1,"+","-")

f:id:waenavi:20190801152053j:plain

 

答えは+の場合は足し算、-の場合は引き算です。

  • セルG3:=IF(E3="+",D3+F3,D3-F3)

f:id:waenavi:20190801152147j:plain

 

セルC3:G3の数式を、保存用シート(別の新しいシート)のC2:G1201にコピーします。

f:id:waenavi:20190801153120j:plain

 

値の貼り付けで計算式を消します。このシートを「保存用2」というシート名にしたとします。

f:id:waenavi:20190801153247j:plain

 

さきほどの問題と同じようにプリントを作りますが、D列、K列は次の数式を入力します。これで完成です。

  • セルD5:=VLOOKUP($C$2*1000+$B5,保存用2!$C:$G,3,0)
  • セルK5:=VLOOKUP($C$2*1000+$I5,保存用2!$C:$G,3,0)

f:id:waenavi:20190801153515j:plain

 

4.複雑なプリントを作る(ひっ算)

問題

2桁同士の足し算と引き算をランダムに混ぜた30問のひっ算の計算プリントを40枚作成しなさい。

f:id:waenavi:20190801161304j:plain

 

解説

次のような枠を作ります。管理番号をスピンボタンで増減させることと、解答の表示非表示を切り替える機能を付けることはさきほどの問題と同じです。

f:id:waenavi:20190801154618j:plain

 

セルF5、F6、F7、C6に次の数式を入力します。

  • セルF5:=VLOOKUP($C$2*1000+B5,保存用2!$C:$G,2,0)
  • セルF6:=VLOOKUP($C$2*1000+B5,保存用2!$C:$G,4,0)
  • セルF7:=VLOOKUP($C$2*1000+B5,保存用2!$C:$G,5,0)
  • セルC6:=VLOOKUP($C$2*1000+B5,保存用2!$C:$G,3,0)

f:id:waenavi:20190801154910j:plain

 

いっぱんにXの位を求める式は「MOD(INT(値/X),10)」です(これは暗記すべき重要公式!!)。10の位はMOD(INT(F5/10),10)です。ただし、10未満の場合は空欄にしますので、IF関数で分岐します。1の位は10で割った余りです。

  • セルD5:=IF(F5>=10,MOD(INT(F5/10),10),"")
  • セルE5:=MOD(F5,10)

f:id:waenavi:20190801155512j:plain

 

答えは3桁になる可能性があります。

  • セルC7:=IF(F7>=100,INT(F7/100),"")
  • 【別解】=IF(F7>=100,MOD(INT(F7/100),10),"")

f:id:waenavi:20190801155719j:plain

 

これらの数式を(2)~(30)に貼り付けます。答えの部分に条件付き書式を設定するのはさきほどの問題と同じです。また、F列、K列、P列、U列については非表示にするか、文字の色を白色にします。

f:id:waenavi:20190801160112j:plain

 

このように、計算の問題をリスト形式にして、プリント(帳票)と分離することによって、問題と答えが保存できるだけでなく、複雑な帳票を作ることができます

f:id:waenavi:20190801161128j:plain

 

5.工夫次第でいろんなプリントが作れる(分数の足し算引き算)

問題

分子が1~10、分母が2~10の分数のうち、約分ができないものをすべて挙げなさい。また、約分ができない分数同士の足し算・引き算のプリントを作りなさい。

f:id:waenavi:20190801173149j:plain

 

解説

まずは、約分ができない分数(分母分子互いに素)を見つけます。A2~A10に「1」を入力し、B2~B10に2~10の連番を入力します。セルA11、B11にそれぞれ数式を入力します。

  • セルA11:=A2+1
  • セルB11:=B2

f:id:waenavi:20190801164542j:plain

 

この数式をA12:B91にコピーします。

f:id:waenavi:20190801164650j:plain

 

A列、B列をコピー、値の貼り付けをして計算式を消します。

f:id:waenavi:20190801164714j:plain

 

C列に最大公約数を求めます。GCD関数は、最大公約数を求める関数です。また、D列に分子/分母を求めておきます。

  • セルC2:=GCD(A2,B2)
  • セルD2:=A2/B2

f:id:waenavi:20190801164821j:plain

 

最大公約数GCDが1以外のものは約分できる分数です。オートフィルタで抽出します。

f:id:waenavi:20190801164923j:plain

f:id:waenavi:20190801164925j:plain

 

行を削除します。これによって最大公約数が1のものだけが残り、約分ができない分数が53個あることが分かります。

f:id:waenavi:20190801165010j:plain

 

D列の昇順で並べ替えます。A2:B54に「分数」という名前を定義しておきます。53個の分数の中から2つをランダムに選んで、足し算または引き算の式を作ります。

f:id:waenavi:20190801165147j:plain

 

保存用のシートを作ります。最初の数(A)は2~53のランダムとします。「53」は、約分できない分数の個数です。引き算の後の数(B)はできるだけ答えが0以下にならないように1~D2-1とします。AとBは「分数」の行番号です。

  • セルD2:=RANDBETWEEN(2,53)
  • セルE2:=CHOOSE(RANDBETWEEN(1,2),"+","-")
  • セルF2:=RANDBETWEEN(1,D2-1)

f:id:waenavi:20190801165838j:plain

 

INDEX関数で、該当する行番号の分子と分母を求めます。

  • セルG2:=INDEX(分数,D2,1)
  • セルH2:=INDEX(分数,D2,2)
  • セルI2:=INDEX(分数,F2,1)
  • セルJ2:=INDEX(分数,F2,2)

f:id:waenavi:20190801170012j:plain

 

分母の積(たすきがけ)で足し算または引き算をしてから、GCDで約分をします。このシートを「保存用3」というシート名にしたとします。

  • セルK2:=IF(E2="+",G2*J2+H2*I2,G2*J2-H2*I2)
  • セルL2:=H2*J2
  • セルM2:=K2/GCD(K2,L2)
  • セルN2:=L2/GCD(K2,L2)

f:id:waenavi:20190801170159j:plain

 

帳票を作ります。

f:id:waenavi:20190801171634j:plain

 

管理番号を検索値として、VLOOKUP関数で求めたら完成です。

  • セルC5:=VLOOKUP($C$2*1000+B5,保存用3!$C:$N,5,0)
  • セルC6:=VLOOKUP($C$2*1000+B5,保存用3!$C:$N,6,0)
  • セルD5(結合セル):=VLOOKUP($C$2*1000+B5,保存用3!$C:$N,3,0)
  • セルE5:=VLOOKUP($C$2*1000+B5,保存用3!$C:$N,7,0)
  • セルE6:=VLOOKUP($C$2*1000+B5,保存用3!$C:$N,8,0)
  • セルG5:=VLOOKUP($C$2*1000+B5,保存用3!$C:$N,11,0)
  • セルG6:=VLOOKUP($C$2*1000+B5,保存用3!$C:$N,12,0)

f:id:waenavi:20190801171530j:plain

 

条件付き書式で、答えの罫線を消すことも可能です。

f:id:waenavi:20190801171924j:plain

 

また、答えの分母が1のときに、条件付き書式で斜線を引くことも可能です。

f:id:waenavi:20190801171156j:plain

 

6.簡単な文章題(速さ)

問題

距離(km)、時間、時速の文章題をランダムで10問出題しなさい。

f:id:waenavi:20190801182742j:plain

 

ただし、速さは0.1~100.0km/hで0.1km/h刻み、時間は2h~5hの整数とし、問題文のパターンは次の5つとする。

  • 時速[ ]kmの速さで[ ]時間進むと、進んだ距離は[ ]kmである。
  • 時速[ ]kmで[ ]km進むと[ ]時間かかる。
  • [ ]kmを時速[ ]kmで行くと[ ]時間かかる。
  • [ ]km離れた場所に[ ]時間で着くためには時速[ ]kmで行かなければならない。
  • 時速[ ]kmで[ ]時間進んだときの道のりは[ ]kmである。

 

解説

距離/時間=速さ、人口/面積=人口密度、食塩/食塩水=濃度のように、小学校の算数には「A/B=C」のパターンがたくさんあります。日本語の文章はいろいろなパターンがありますが、解き方は、A=B*C、B=A/C、C=A/Bの3通りしかありません。パターンを決めておけば、簡単な文章題のプリントも作れます。

割り算(B=A/CまたはC=A/B)を基準として問題を作ると割り切れないことがありますから、掛け算(A=B*C)のパターンを使って問題を作ります。0.1刻みの場合は、1~1000を10で割ります。

  • セルD2:=RANDBETWEEN(1,1000)/10
  • セルE2:=RANDBETWEEN(2,5)
  • セルF2:=D2*E2

f:id:waenavi:20190801185907j:plain

 

G列には答えになるものを1~3で表します。1=速さ、2=時間、3=距離です。

  • セルG2:=RANDBETWEEN(1,3)

f:id:waenavi:20190801174553j:plain

 

別のシートに問題文を入力しておきます。X=速さ、Y=時間、Z=距離としています。この5つに「問題文」という名前を付けます。

f:id:waenavi:20190801174643j:plain

 

5つの問題文のパターンのうちどれを使うかを1~5で表します。

  • セルH2:=RANDBETWEEN(1,5)

f:id:waenavi:20190801174738j:plain

 

問題文は「INDEX(問題文,H2)」となります。これをSUBSTITUTE関数3回で、X、Y、ZをD2~F2に置き換えます。ただし、答えになるものは■としておきます。

  • セルI2:=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(INDEX(問題文,H2),"X",IF(G2<>1,D2,"■")),"Y",IF(G2<>2,E2,"■")),"Z",IF(G2<>3,F2,"■"))

f:id:waenavi:20190801175121j:plain

 

式と答えはセルG2を使って次のように表すことができます。このシートを「保存用4」というシート名にしたとします。このように、1以上の整数をフラグにすることによって、CHOOSE関数やINDEX関数が使えるので便利です。

  • セルJ2:=CHOOSE(G2,F2&"÷"&E2&"="&D2,F2&"÷"&D2&"="&E2,E2&"×"&D2&"="&F2)
  • セルK2:=INDEX(D2:F2,G2)

f:id:waenavi:20190801182426j:plain

 

値の貼り付けで計算式を消すこと、VLOOKUP関数で求めること、式と答えは条件付き書式を設定することなどはさきほどの問題と同じです。問題文は、四角をカッコに置換します。

  • セルC5:=SUBSTITUTE(VLOOKUP($C$2*1000+B5,保存用4!$C:$K,7,0),"■","(   )")
  • セルD6:=VLOOKUP($C$2*1000+B5,保存用4!$C:$K,8,0)
  • セルD6:=VLOOKUP($C$2*1000+B5,保存用4!$C:$K,9,0)

f:id:waenavi:20190801182615j:plain

 

7.さいごに

速さの問題は、分速、秒速、メートルなどに換算する問題もあり、問題文のパターンがたくさんあります。

Excelで出題できるのはパターンが決まっているもので、複雑な計算や文章題をExcelで作るのは大変なので、ネット上にある無料のプリント教材や、市販の計算ドリルを使ったほうが早いと思います。

無料プリント一覧 | ぷりんときっず
https://print-kids.net/print/

3ステップドリル2年1学期 - 教育出版
 https://www.kyoiku-shuppan.co.jp/textbook/shou/sansu/document/ducu2/docu101/index.html 

 


解説は以上です。


 

 


Copyright(C)2018-2019 waenavi, All rights reserved. [www.waenavi.com 定礎 平成三十年八月]