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

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

【MOD関数】余りの性質を利用してローテーションによって数値をずらす練習問題

足し算で「10+30」の答えは40となりますが、世の中には10と30を足して40にならないことがあります。例えば、10月の30か月後は、40月ではなく4月です。また、10時の30時間後は、40時ではなく16時です。月は1~12の繰り返し、時間は0~23の繰り返しで、基本的に上限を超えることはありません。

このように、上限・下限が決まっていて、繰り返しになっているものは、MOD関数を用いて答えを修正しなければなりません。また、「3月の5か月前」は引き算で書くと「3 - 5 = -2」となりますが、引き算した結果がマイナスにならないようにしなければなりません。これもMOD関数を使えば解決できます

そこで、今回は、MOD関数で求められる余り(剰余)の繰り返しの性質を利用して、足し算・引き算の答えを補正する方法、ローテーションによって数値をずらす方法などについて出題します。

目次

1.引き算を修正する

(1)マイナスの余りの性質

問題

-5から30までの整数を入力した。マイナスの数に24を足しなさい。さらに、24以上の数から24を引きなさい。

f:id:waenavi:20201202220904j:plain

 

解説

元の数にIF関数を足します(参考:【Excel】IF関数の共通部分を外に出す、ある条件のときだけ計算を追加する)。

f:id:waenavi:20201202221813j:plain

 

マイナスの数であることを判定して、TRUEであれば24を足し、FALSEであれば0を足します。

  • =A1+IF(A1<0,24,0)

f:id:waenavi:20201202221946j:plain

 

この場合、24以上の数もそのままです。

f:id:waenavi:20201202222015j:plain

 

そこで、MOD関数を挿入します。24で割ったときの余りを求めます。

  • =MOD(A1,24)

f:id:waenavi:20201202231244j:plain

 

24で割ったときの余りは、マイナスの場合も含めて0~23の繰り返しになります。特に、-24~-1については、24を加算したのと同じになります。

f:id:waenavi:20201202234423j:plain

 

いっぱんに-X~-1をXで割ったときの余りは、Xを加算したのと同じになります。

f:id:waenavi:20201202234802j:plain

 

この場合、24以上の数は24を引いたのと同じになります。

f:id:waenavi:20201202234939j:plain

 

(2)時間の引き算

問題

セルA1に開始時間、セルA2に終了時間を入力して、引き算をすることによって開始から終了までの時間数を求めた。セルA1の値が、セルA2の値より大きい場合であっても正しく求められるように数式を修正しなさい。

f:id:waenavi:20201202235242j:plain

 

解説

大きい数から小さい数を引くとプラスになりますが、小さい数から大きい数を引くとマイナスになります。しかし、23時から翌朝の7時までの時間はマイナス16時間ではなく、8時間が正しいです。

f:id:waenavi:20201202235312j:plain

 

つまり、マイナスになった場合は24を加算すればよいです。

f:id:waenavi:20201202235807j:plain

 

MOD関数を挿入します。24で割ったときの余りを求めます。

  • =MOD(A2-A1,24)

f:id:waenavi:20201203004950j:plain

 

2.足し算を修正する

問題

セルA1に開始時間、セルA2に加算する時間を入力して、足し算をすることによって終了時間を求めた。24時を超える場合であっても正しく求められるように数式を修正しなさい。

f:id:waenavi:20201206135312j:plain

 

解説

23時+7時間は30時ですが、23時の7時間後は午前6時です。

f:id:waenavi:20201206135948j:plain

 

24時間制の場合、時間は0~23の繰り返しです。足し算をして24時を超えるときに、0時に戻すにはMOD関数を使います。

f:id:waenavi:20201206135659j:plain

 

MOD関数を挿入します。

f:id:waenavi:20201206140227j:plain

 

24で割ったときの余りを求めます。

f:id:waenavi:20201206140321j:plain

 

3.月の足し算・月の引き算

問題

A列に1~12の連番を入力した。A列の数値を現在の月として、その3か月後の月を求めなさい。また、3か月前の月を求めなさい。

f:id:waenavi:20201206140511j:plain

 

解説

3か月後なので、3を足します。10月、11月、12月の3か月後がそれぞれ13月、14月、15月になってしまいます。

  • =A2+3

f:id:waenavi:20201206140649j:plain

 

月は1から12までの連番ですが、3か月後の月は、その連番が3か月ずれています。12を超えたときに12を引いて、1月、2月、3月にしようとしています。

f:id:waenavi:20201206140957j:plain

 

1から始まる繰り返しにするには、元の数から1を引き、12で割ったときの余りに1を足します。

f:id:waenavi:20201206141720j:plain

 

1から12までの連番をずらすには、3を足してから、その数から1を引いて、12で割ったときの余りに1を足します。

  • =MOD(今月+3か月後-1,12)+1 

MOD関数を挿入します。

f:id:waenavi:20201206141822j:plain

 

1を引くので、プラス2になります。

f:id:waenavi:20201206141844j:plain

 

12で割った余りに1を足します。これで完成です。

  • =MOD(A2+2,12)+1

f:id:waenavi:20201206141936j:plain

 

3か月前なので、3を引きます。

  • =A2-3

f:id:waenavi:20201206144250j:plain

 

1月の3か月前は10月です。3か月前も同じように、3を引いてから、その数からさらに1を引いて、12で割ったときの余りに1を足します。

f:id:waenavi:20201206144852j:plain

 

MOD関数を挿入します。

f:id:waenavi:20201206145029j:plain

 

1を引くので、マイナス4になります。

f:id:waenavi:20201206145202j:plain

 

12で割った余りに1を足します。これで完成です。

  • =MOD(A2-4,12)+1 

f:id:waenavi:20201206163053j:plain

 

4.四半期の求め方

問題

A列に1~12の連番を入力した。4月から始まる年度の場合、4月~6月が第1四半期である。A列の月から四半期を求めなさい。

f:id:waenavi:20201206163238j:plain

 

解説

4月から始まる年度の場合、4月~6月が第1四半期、1月~3月が第4四半期です。

f:id:waenavi:20201206163744j:plain

 

MOD関数を挿入します。開始月である4を引いて、12で割ったときの余りを求めます。開始月である4月が0となり、11までの連番となります。

  • =MOD(A2-4,12)

f:id:waenavi:20201206163925j:plain

 

これを、「1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4」に変換するには、INT関数を使います(参考:【Excel】INT関数を使って同じ数を複数個繰り返す数列を作る方法)。3で割って1を足します。これで完成です。

  • =INT(MOD(A2-4,12)/3)+1

f:id:waenavi:20201206172338j:plain

 

5.ローテーション

(1)前に1つずらす

問題

A列に1~7の整数をランダムに入力した。A列の数値に1を足しなさい。ただし、7の場合は1に戻すものとする。

f:id:waenavi:20201206172502j:plain

 

解説

1~7の整数に1を加えると2~8になります。

f:id:waenavi:20201206172954j:plain

 

7を8にするのではなく、1にすると、ローテンションで1つずらすことができます。

f:id:waenavi:20201206174338j:plain

 

ここで、7で割ったときの余りを求めます。1~6はそのままで7だけ0になります。

  • =MOD(A1,7)

f:id:waenavi:20201206174531j:plain

 

このように、1から始まる連番の最大値を0にするにはMOD関数を使って、最大値で割ったときの余りを求めます。

f:id:waenavi:20201206174935j:plain

 

これに1を足します。これで完成です。

f:id:waenavi:20201206175911j:plain

 

1から始まる番号を1つずつ進め、最大値を1に戻すには、最大値で割った余りに1を足します。

f:id:waenavi:20201206180151j:plain

 

(2)前に3つずらす

問題

A列に1~7の整数をランダムに入力した。A列の数値に3を足しなさい。ただし、5,6,7の場合は1,2,3に戻すものとする。

f:id:waenavi:20201206172502j:plain

 

解説

1~7の整数に3を加えると4~10になります。

f:id:waenavi:20201206180316j:plain

 

5,6,7を8,9,10にするのではなく、1,2,3にすると、ローテンションで3つずらすことができます。

f:id:waenavi:20201206180618j:plain

 

ここで、2をたして、7で割ったときの余りを求めます。1~5はそのままで、5~7が0~2になります。

  • =MOD(A1+2,7)

f:id:waenavi:20201206180830j:plain

 

これに1を足します。これで完成です。

  • =MOD(A1+2,7)+1

f:id:waenavi:20201206180908j:plain

 

1から始まる番号をローテーションで3個進めるには、2を足して最大値で割った余りに1を足します。いっぱんに、1から始まる番号をローテーションでN個進めるには、N-1を足して最大値で割った余りに1を足します。

f:id:waenavi:20201206181617j:plain

 

(3)後ろに1つずらす

問題

A列に0~6の整数をランダムに入力した。A列の数値に1を引きなさい。ただし、0の場合は6とする。

f:id:waenavi:20201206182621j:plain

 

解説

0~6の整数から1を引くと-1~5になります。

f:id:waenavi:20201206182730j:plain

 

6を-1にするのではなく、6にすると、ローテンションで1つずらすことができます。

f:id:waenavi:20201206183052j:plain

 

ここで、7で割ったときの余りを求めます。0~5はそのままで-1だけ6になります。これで完成です(参考:【Excel】MOD関数の使い方、INT関数との関係、マイナスの場合の余り)。

f:id:waenavi:20201206183337j:plain

 

-1を7で割った余りは6です。このように-1を割って余りを求める計算をすることによって、最小値を最大値に変換することができます。

f:id:waenavi:20201206184137j:plain

 

(4)マイナスを作る

問題

A列に1~7の整数をランダムに入力した。A列の数値に1を引きなさい。ただし、1の場合は7とする。

f:id:waenavi:20201206172502j:plain

 

解説

まず、2を引きます。これによって最小値である1が、-1になります。

f:id:waenavi:20201206184404j:plain

 

マイナスの数を作ることによって、最大値にすることができます。

f:id:waenavi:20201206185019j:plain

 

MOD関数を挿入して、7で割ったときの余りを求めます。これで-1が6になります。

  • =MOD(A1-2,7)

f:id:waenavi:20201206185211j:plain

 

これに1を足します。これで完成です。

  • =MOD(A1-2,7)+1

f:id:waenavi:20201206185251j:plain

 

1から始まる番号を1つずつ減らし、1を最大値にするには、2を引いて最大値で割った余りに1を足します。

f:id:waenavi:20201206190025j:plain

 

6.最大値を0にする

問題

セルA1の値の1の位を取り出し、10から引いた数を求めなさい。ただし、求めた答えが10の場合は0としなさい。

f:id:waenavi:20201206190219j:plain

 

解説

1の位の数値を取り出すには、MOD関数を使います(参考:MOD関数で小数部分や下位の桁を取り出す、下の位の一致判定)。10で割ります。これを10から引きます。

  • =10-MOD(A1,10)

f:id:waenavi:20201206195723j:plain

 

1の位の数を取り出すと、0~9の数になります。これらを10から引くと、10~1になります。1から始まる連番の最大値を0にするには、最大値である10で割った余りを求めます。これによって、0はそのままで1~9を逆順にすることができます。

f:id:waenavi:20201206200244j:plain

 

外側にMOD関数を挿入します。10で割ったときの余りを求めます。

  • =MOD(10-MOD(A1,10),10)

f:id:waenavi:20201206200408j:plain

 

7.ローテーションの入力

問題

セルA1:E1に1~5の数を入力した。次の図のように、2行目以降に縦向きに1~5の順に連番を入力しなさい。

f:id:waenavi:20201206201003j:plain

 

解説

1~5の数字を1つずつずらしながら繰り返し入力しようとしています。1~4については1を足せばよいですが、5は1に戻さなければなりません。

f:id:waenavi:20201206201616j:plain

 

MOD関数を挿入します。5で割ったときの余りを求めると、1~4はそのままで、5が0になります。

f:id:waenavi:20201206201707j:plain

 

1を足します。これで1つずれます。

  • =MOD(A1,5)+1

f:id:waenavi:20201206201750j:plain

 

オートフィルをします。これで完成です。

f:id:waenavi:20201206201808j:plain

 


解説は以上です。


 


Copyright(C)2018-2021 waenavi, All rights reserved. [www.waenavi.com 定礎 平成三十年八月]
Youtube | 公式サイト | twitter | 著作権 | 運営者情報 | お問い合わせ