割り算で、元の数(割られる数)が1つずつ増えると、余りも1つずつ増えますが、割り切れると余りは0になります。4で割ったときの余りは「1,2,3,0」の繰り返しとなります。このような繰り返す性質のことを「周期性」といいます。
日常生活にはこの周期性を利用したものがたくさんあります。曜日は7つの曜日が周期的に繰り返されます。当番や勤務シフトは、平等かつ等間隔に担当となるように割り振るものです。オリンピックは4年に1回、世界陸上は2年に1回です。このような周期性のある事柄や計算にはMOD関数が使われます。
そこで、今回は、MOD関数を用いて繰り返しの数列を作ること、繰り返しの連番を振ること、MOD関数を利用した文章題を出題します。
目次
- 1.連番を利用して繰り返しの数列を作る
- 2.複数列に並べたときの列番号
- 3.降順の数列
- 4.等差数列を作る
- 5.INTとMODの組み合わせ
- 6.一部の行だけ連番を振る
- 7.マイナスの余り
- 8.マイナスの余りを利用する
1.連番を利用して繰り返しの数列を作る
問題
1から始まる連番を入力した。これを利用して、0,1,2,3を繰り返す数列を作りなさい。また、1,2,3,4を繰り返す数列を作りなさい。
解説
A列には数値が入力されています。MOD関数を挿入します(参考:【Excel】MOD関数の使い方、INT関数との関係、マイナスの場合の余り)。4で割ったときの余りを求めます。1,2,3,0の順で繰り返す数列になります。
MOD関数を用いて、4で割ったときの余りを求めると、0から3までの4種類の整数になり、4つの数字が繰り返されます。
これは、すべての数を4つのグループに分けるのと同じです。
この繰り返しを1つずらすには、元の数を1つ減らします。
これで完成です。0,1,2,3の順で繰り返す数列になります。
- =MOD(A1-1,4)
4種類の数字を繰り返す数列を作るには、MOD関数を用いて4で割ったときの余りを求めます。X個の種類の数字を繰り返すときには、Xで割ったときの余りを求めます。
さらに1を足します。これで1から始まって、1,2,3,4の順で繰り返す数列になります。
- =MOD(A1-1,4)+1
1から始まる連番を、1~4を繰り返す数列にするには、元の数から1を引いた数を4で割り、その余りに1を足します。1から始まる連番を、1~Xを繰り返す数列にするには、元の数から1を引いた数をXで割り、その余りに1を足します。
2.複数列に並べたときの列番号
問題
A~F列に、1001から始まる連番を横向きに入力した。セルH1に入力した値が左から何列目に入力されているかを調べたい。セルH2に数式を入力して列数を求めなさい。
解説
6列に入力されているのは1ずつ増える連番であり、6列に並べたときの列番号は1,2,3,4,5,6の繰り返しになりますので、連番を繰り返しの数列に変換していることから、MOD関数が使えることが分かります。
1001から始まる連番を入力していますが、開始番号である1001を引くと0から始まる連番になります。
数値を6列で入力するのは、連番を6つのグループに分けているのと同じです。6で割ったときの余りを求めると0~5になります。これに1を足せば列番号になります。
MOD関数を挿入します。元の数から先頭の数(開始番号)を引きます。
6で割ったときの余りを求めます。1を足します。これで完成です。
- =MOD(H1-A2,6)+1
3.降順の数列
問題
セルB1に西暦年4桁を入力した。次回の夏季オリンピックまであと何年かを求めなさい。ただし、4の倍数の場合は4年とする。
解説
夏季オリンピックは通常、西暦が4の倍数の年に開催されます。オリンピックが開催された年は次のオリンピックまであと4年です。その翌年はあと3年です。
西暦年は1ずつ増える連番になっているのに対して、次回のオリンピックまでの年数は、4,3,2,1の繰り返しになりますので、MOD関数が使えることが分かります。
ところで、西暦年を4で割ったときの余りは、0,1,2,3の繰り返しになります。元の数が昇順であれば、余りも昇順になります。
これを降順にするには引き算を使います。例えば、3からこれらの数を引くと、3,2,1,0となります。また、4からこれらの数を引くと、4,3,2,1の繰り返しになります。
MOD関数を挿入します。西暦年を4で割ります。
これを4から引きます。これで完成です。
- =4-MOD(B1,4)
4.等差数列を作る
問題
1から始まる連番を入力した。1,3,5,7,…のように1から始まる奇数の数列を作りなさい。また、1,3,5,7,1,3,5,7,…と繰り返す数列を作りなさい。
解説
はじめの数に、一定の数だけ増え続ける、もしくは減り続ける数列のことを「等差数列」といいます。そして、隣りあう2つの数の差を「公差」といいます。
あらかじめ連番が入力されている場合、公差を掛けることによって、等差数列を作ることができます。奇数は2つずつ増えていますから、2を掛けます。
2を掛けると偶数の列になります。
ここから1を引くことで奇数の列になります。
4つずつ繰り返す数列は、とりあえずMOD関数を用いて4で割ったときの余りを求めます。
MOD関数を挿入します。4で割ったときの余りを求ますが、このとき元の連番が1から始まっていますので、元の数から1を引きます。
- =MOD(A1-1,4)
これで0,1,2,3の順になります。
1ずつ増えているものを、2ずつ増える数列にするには2倍します。2倍すると、偶数の列になります。
- =MOD(A1-1,4)*2
これに1を足せば、1から始まる奇数の列になります。
5.INTとMODの組み合わせ
問題
「1-1」「1-2」「1-3」「1-4」「2-1」・・・という文字列を作りなさい。
解説
この文字列のハイフンの前の部分だけを取り出すと、同じ数を4回繰り返す数列になっています。これはINT関数を使います(参考:【Excel】INT関数を使って同じ数を複数個繰り返す数列を作る方法)。
ハイフンの後の部分だけを取り出すと、1,2,3,4を繰り返す数列になっています。これはMOD関数を使いますので、分けて考えましょう。
まずは、INT関数を挿入します。
このとき、元の数から先頭の数を引くことを考えます。元の数が1から始まる連番の場合は、元の数から1を引きます。元の数から1を引いて4で割ります。
- =INT((A1-1)/4)
つぎに、MOD関数を挿入します。元の数から1を引いて4で割ります。
- =MOD(A1-1,4)
これらに1を足せば求める文字列になります。それでは、もう一度、先頭から入力してみましょう。まずは、INT関数を挿入します。
元の数から1を引いて4で割ります。1を足します。
ハイフンを連結します。
つぎに、MOD関数を挿入します。元の数から1を引いて4で割ります。1を足します。これで完成です。
- =INT((A1-1)/4)+1&"-"&MOD(A1-1,4)+1
6.一部の行だけ連番を振る
(1)累計を利用する
問題
B列に数値の「1」を入力した。SUM関数を用いて累計を求めなさい。また、これを利用して、1~5の数値を繰り返し入力しなさい。
解説
SUM関数を用いて累計を求めるには、範囲の始まりを絶対参照、終わりを相対参照にして同じセルを参照します(参考:【Excel】SUM関数の合計する範囲の始点や終点を固定するとどうなるか?)。
- =SUM($B$1:B1)
これで累計を求めることができます。
1から始まる連番を、1~5の繰り返しの数列にするには、元の数から1を引き、5で割った余りに1を足します。
累計を求めたSUM関数の外側に、MOD関数を挿入します。1を引きます。
5で割ったときの余りを求めます。最後に1を足します。これで、1~5の繰り返しになります。
- =MOD(SUM($B$1:B1)-1,5)+1
外側に、IF関数を挿入します。
空白の場合は空白を返します(参考:【Excel】空白セルの判定をして、IF関数で「空白文字列」を返す方法と注意点)。
- =IF(B1="","",MOD(SUM($B$1:B1)-1,5)+1)
これで完成です。
(2)個数を利用する
問題
A列に文字列が入力されている場合は空白とし、それ以外は1~4の数値を繰り返し入力しなさい。
解説
空白のセルを数える関数はCOUNTBLANK関数です(参考:IF関数の条件に「等号や不等号が必要」と思っているなら、IF関数を勉強し直してほしい)。累計と同じように、範囲の始まりだけを固定します。
- =COUNTBLANK($B$1:B1)
これで空白セルを数えることができます。
設問(1)と同じように、MOD関数を挿入します。1を引きます。4で割ったときの余りに1を足します。
- =MOD(COUNTBLANK($B$1:B1)-1,4)+1
さらに、外側に、IF関数を挿入します。空白ではない場合に空白を返します。
- =IF(B1="",MOD(COUNTBLANK($B$1:B1)-1,4)+1,"")
これで完成です。
7.マイナスの余り
問題
A列に、-1から始まる連番を入力した。これを利用して、4,3,2,1を繰り返す数列を作りなさい。
解説
MOD関数を挿入します。4で割ったときの余りを求めます。3,2,1,0を繰り返す数列になります。
マイナスの数も4で割ると、余りは0から3までの数になります。
1を足せば、1から4までの繰り返しになります。
- =MOD(A1,4)+1
8.マイナスの余りを利用する
(1)マイナスを付けると逆順になる
問題
A列に、1から始まる連番を入力した。これを利用して、3,2,1,3,2,1,…と繰り返す数列を作りなさい。
解説
3個ずつ繰り返しているので、MOD関数を用いて、3で割ったときの余りを求めます。1ずつ増える数列を3で割ると、その余りも1ずつ増えます。
ここで、元の数にマイナスをつけます。2,1,0の繰り返しになります。
- =MOD(-A1,3)
マイナスを付けると1ずつ減る数列になります。3で割ると、その余りも1ずつ減ります。
1を足せば、3から1までの繰り返しになります。
- =MOD(-A1,3)+1
(2)オリンピックまでの年数
問題
A列に西暦年4桁を入力した。冬季オリンピックまであと何年かを求めなさい。ただし、開催年は0とする。
解説
冬季オリンピックは通常、西暦が4の倍数の年の2年後に開催されます。開催された年を0とします。その翌年はオリンピックまで3年あります。次回のオリンピックまでの年数は、3,2,1,0の繰り返しになります。このような数列はMOD関数を用いて作ります。
MOD関数を挿入します。
西暦年にマイナスをつけて、4で割ります。
- =MOD(-A2,4)
2年ずれているので、元の数から2を引きます。これで完成です。
- =MOD(-A2-2,4)
解説は以上です。