エクセルで何かを計算するとき、四則演算は特に使用頻度が多いですよね。
四則演算の中で、割り算は「/(スラッシュ)」を用いて計算することが多いと思うのですが、割り切れないときの答えは少数表示ですよね。
金額や個数など、少数表示だと困るケースがありますよね。
そんなときは「丸め」や「余り」を使うと思いますが、割り算の余りってどう求めればよいでしょう?
答えは「MOD関数を使う」です。
MOD関数は割り算の余りを返してくれる関数なんです。
そこで本記事では「MOD関数を使って割り算の余りを求める方法」を、いくつかの使用例を交えながら解説します。
1.MOD関数の構文
こんにちは。エクセルマン・ブリーダーのしもむぎ(@re_znd13)です。
まずはMOD関数の構文から見てみましょう。
MOD(数値, 除数)
MOD関数では「数値」と「除数」の2つの値を引数として入力します。
「数値」が被除数であり、これを「除数」で割った余りが返されます。
2.MOD関数の使用例
2.1 算数の文章問題
割り算、余りといえば、「13個のりんごを5人で同じ数ずつ分けると一人あたり何個のりんごがもらえますか?また何個のりんごが余りますか?」というような算数の文章問題を思い浮かべることが多いかと思います。
最も簡単な例かと思いますので、最初に取り上げますね。
今回のテーマである余りから先に求めてみましょう。
前章で確認した構文の通り、以下のような式で「3個」という余りが得られます。
=MOD(13,5)
13や5という固定値でなく、別のセルを参照する形でももちろんOKです。
ちなみに、一人あたりの数は割り算の答えである「商」なので、割り算の整数部分をINT関数で取り出したり、ROUNDDOWN関数で小数点以下を切り捨てたり、「商」を求めるQUOTIENT関数などで求めることができます。
商を求めてから被除数から引いてもよいですが、MOD関数だとスマートに求められますよね。
2.2 偶数・奇数判定
この例では、偶数と奇数の判定について考えてみます。
偶数・奇数といえば、「2で割り切れるかどうか」で判断できますよね。
ある数値を被除数、除数を2とした割り算においてMOD関数で求まる値が0だと偶数、1だと奇数だと言えます。
A3セルに数値(被除数)を入力したら、B3セルに偶数か奇数かを判定して表示するようにしてみましょう。
判定というとif関数の出番ですね。
A3セルに任意の数値を入力します。
B3セルには、if関数を使用して、以下のような数式を入力しましょう。
=IF(MOD(A3,2)=0,"偶数","奇数")
もしくは =IF(MOD(A3,2)=1,"奇数","偶数") でも同様の結果が得られます。
別記事「エクセルVBAでのMOD演算子による偶数奇数や素数の判定方法」ではVBAでの偶数・奇数判定を取り扱っていますので、そちらも併せてご覧ください。
if関数を使って判定結果を文字列として表示する方法は、別記事「エクセルでif関数を使う方法!分岐先の値の組み方5選を解説」の中でも解説しているので、併せてご覧ください。
2.3 素数判定
この例では、素数かどうかの判定について考えてみます。
素数というのは、「1より大きい自然数で、正の約数が1と自分自身のみであるもの」とされています。
つまり、対象の値を1より大きい自然数で割ったときに、割り切れる組合せがない(余り0の組合せがない)ならば素数といえる、ということです。
今回は、1より大きく25以下の自然数を対象に、素数かどうかの判定をしてみましょう。
以下の画像と合わせて解説します。
A4セルには対象の値(1より大きく25以下の自然数)を任意に入力します。
B列には除数を表示させます。
除数は1と対象値を除いた、その間にある自然数ですから、対象値が19の場合には2~18となります。
画像の例では、B4セルに固定値の2、B5セル以降は上のセルに1を足し、対象値(A4セル)以上の数値は表示させないような仕組みにしています。
C列には対象値/除数の余りを表示させます。
次章で詳しく述べますが、除数に当たるセルが空欄や0であった場合にMOD関数はエラーを出しますので、それをif関数で回避しています。
D4セルで素数判定を行ないます。
C列(C4~C26セル)に計算した余りの中にある0をCOUNTIF関数でカウントし、その数が0でなければ”素数である”、それ以外の場合は”素数でない”という文字列を表示させます。
画像は対象値が13のケースと、25のケースになります。
この事例は、VBAで扱うともっとおもしろいのです。
別記事「エクセルVBAでのMOD演算子による偶数奇数や素数の判定方法」で取り扱っていますので、そちらも併せてご覧ください。
3.MOD関数のエラーと回避方法
2.3節でも少し触れましたが、MOD関数は割り算ができないケースではエラーとなります。
割り算ができないケースとは、除数が0である・除数が空欄である・除数が数値でないといったケースです。
下の画像はエラーとなる4つのケースを示しています。
B2セルでは、固定値10を被除数、固定値0を除数としたケースです。
「#DIV/0!」というエラー値は、「0で割られているよ」ということを表すものです。
固定値を入力する時点で故意に近いので、除数として0や空欄(””)、文字列を設定しないことで対策をしましょう。
B5セルでは固定値10を被除数、A5セルを除数としたケースです。
A5セルは0ですので、B2セルのケースと同様に、「#DIV/0!」のエラー値が表示されていますね。
一方、B8セルでは固定値10を被除数、A8セルを除数としており、A8が空欄であるために、「#DIV/0!」のエラー値が表示されています。
またB13セルでは固定値10を被除数、A13セルを除数としており、A13が”a”という文字列であるために、「#VALUE!」のエラー値が表示されています。
「#VALUE!」というエラー値は、「引数が間違っているよ」ということを示すものです。
ここでは数値を指定するべきところを文字列を指定しているために、「#VALUE!」のエラー値が表示されているということです。
除数として0や空欄、文字列を含む可能性がある場合、以下のような対策が考えられます。
=IFERROR(MOD(10,A6),"エラー")
もしくは(文字列の可能性がなければ) =IF(OR(A5="",A5=0),"エラー",(MOD(10,A5)))
上段は、値がエラーの場合にエラーの替わりに表示する値を指定できるIFERROR関数というのを使っています。
例では”エラー”という文字列を指定しましたが、””として空欄にしても構いません。
下段は、if関数で、除数が空欄の場合と除数が0の場合をOR関数で結合し、これを満たす場合に”エラー”という文字列を表示する対策です。
ただし、文字列の場合には回避できませんので、IFERROR関数を使うのがスマートかもしれませんね。
4.まとめ
本記事では「MOD関数を使って割り算の余りを求める方法」を、いくつかの使用例を交えながら解説しましたが、いかがでしたか?
ストレートに余りを求めるケースのほか、数値の特性を判定するケースもありましたね。
特に後者はいろいろなことに発展させられるかと思います。