Excelでは、INT関数は小数を整数値にする関数、MOD関数は余りを求める関数です。特にMOD関数と小数とは何の関係もないように思われますが、実は小数でもMOD関数を使います。
ところで、小数には小数点があります。プラスの小数の場合、小数点の左側の部分を「整数部分」、小数点以下の部分を「小数部分」と言うことがあります。学校では中学3年~高校1年の数学で習います。Excelで、小数値を、整数部分と小数部分に分離するには、INT関数とMOD関数を使います。
そこで、今回は、INT関数とMOD関数を用いて、小数値の整数部分と小数部分をそれぞれ取り出す方法と、取り出した整数部分と小数部分をそれぞれ合計する方法について出題します。
目次
1.整数部分
問題
A列に整数や小数を入力した。これらの整数部分を求めなさい。
解説
元の数を超えない最大の整数のことを「整数部分」と言います。・・・と言われてもピンとこないと思いますが、プラスの数の場合、小数点の左側の整数のことです(マイナスの場合は後述)。例えば、12.345の整数部分は12です。小数点以下を切り捨てた数と同じです。
整数の場合は、元の数のままとなります。例えば、12345の整数部分は12345です。
日本の数学では角カッコ[X]で表します。これを「ガウス記号」といいます。
- [12.345] = 12
- [12345] = 12345
Excelでは、INT関数が整数部分を求める関数です(参考:【Excel】INT関数の入力と修正、元の数を超えない最大の整数とは何か)。INT関数で囲むことによって小数点以下切り捨てとなり、整数部分だけになります。
- INT(12.345) = 12
- INT(12345) = 12345
INT関数を挿入します。A列を参照します。なお、1より小さい小数の整数部分は「0」となります。また、0の整数部分も0です。
- =INT(A2)
2.小数部分
問題
A列に整数や小数を入力した。これらの小数部分を求めなさい。
解説
元の数から整数部分を除いた部分のことを「小数部分」と言います。プラスの数の場合、小数点の右側のことです(マイナスの場合は後述)。例えば、12.345の小数部分は12.345 - 12 = 0.345となります。小数点以下の数なので必ず0以上1未満の数になります。
なお、整数の場合は小数点以下が無いので、小数部分=0となります。
ガウス記号で書くと、「X-[X]」となります。
- 12.345-[12.345] = 0.345
- 12345-[12345] = 0
INT関数を用いて書くと次のようになります。
- 12.345 - INT(12.345) = 0.345
- 12345 - INT(12345) = 0
元の数からINT関数を引きます。なお、0の小数部分は0です。
- =A2-INT(A2)
別解
小数部分を求めるのにINT関数ではなく、MOD関数を用いる方法があります。MOD関数は余りを求める関数です。Excelでは、AをBで割ったときの答えを整数値にしたもの(商)をINT(A/B)、そのときの余りをMOD(A,B)と書きます。
ここで、B=1とすると、Aを1で割ったときの商がINT(A)、余りがMOD(A,1)となります。
例えば、12.345を1で割ると整数部分の12が商となります。余りは小数部分の0.345となります。
したがって、「=MOD(元の数,1)」で小数部分を求めることができます。
- =MOD(A2,1)
3.整数部分と小数部分の分離
問題
A列に整数を入力した。正の平方根(ルート)を求め、整数部分と小数部分に分けなさい。
解説
正の平方根(ルート)は原則として0.5乗で求めます(参考:【Excel】逆数と反数、平方根、累乗は初心者の段階で習得すべき_数式の基本)。
- =A2^0.5
整数部分は、元の数の小数点以下を切り捨てます。
- =INT(B2)
- =INT(A2^0.5)
小数部分は、元の数から整数部分を引きます。
- =B2-C2
別解
MOD関数を用いてもかまいません。
- =MOD(B2,1)
- =MOD(A2^0.5,1)
4.日付と時刻の分離
問題
A列に日付と時刻を入力した。日付の部分と時刻の部分に分離しなさい。
解説
A列に日付と時刻を合わせて入力しています。表示形式を標準にすると小数になります。
この小数の整数部分は日付のシリアル値を表し、小数部分は時刻のシリアル値を表します。
したがって、日付と時刻に分離するのと、整数部分と小数部分に分離するのは全く同じことです。
整数部分を求めます。日付の部分はそのままで時刻が0時0分になります。これは時刻のデータ(小数部分)が消えていることを意味しています。
- =INT(A2)
表示形式を変えます。
小数部分を求めます。時刻の部分はそのままで日付が1900/1/0(シリアル値0)になります。これは日付のデータ(整数部分)が消えていることを意味しています。
- =MOD(A2,1)
表示形式を変えます。これで、日付と時刻の分離ができました。
シリアル値にすると完全に分離されていることが分かります。
5.小数部分の換算
(1)時刻の換算
問題
時刻の12:30を誤って小数の12.30と入力してしまったので最後の0が消えた。A列の小数を時刻に変換しなさい。また、時間単位、分単位にそれぞれ換算しなさい。
解説
小数を時刻の形式にするには100倍してTEXT関数で変換します(参考:【Excel】TEXT関数で数値を日付や時刻のシリアル値に変換する、日付の変換方法まとめ)。
- =TEXT(A2*100,"00!:00")*1
時刻の表示形式にします。
シリアル値を時間単位にするにはシリアル値を24倍すれば良いです(参考:【Excel】時間の掛け算、シリアル値と時間の換算、時間の合計を求めるときの注意点)。
- =TEXT(A2*100,"00!:00")*24
また、24*60=1440倍すると分単位になります。
- =TEXT(A2*100,"00!:00")*24*60
別解
整数部分と小数部分に分けて考える方法もあります。小数の12.45を12時間45分と解釈するには、時間は整数部分を取り出せばよく、分は小数部分を100倍すればよいです。TIME関数を使って時刻にします。
- =TIME(整数部分,小数部分*100,0)
- =TIME(INT(A2),MOD(A2,1)*100,0)
これを1440倍すれば分単位にすることは可能です。しかし、小数部分を100倍すれば分になるのですから、時間×60+分で分単位にすることができます。
- =INT(A2)*60+MOD(A2,1)*100
これを60で割れば時間単位になります。
- =INT(A2)+MOD(A2,1)*5/3
(2)年月の加算
問題
次の図で「3.11」「2.10」は、それぞれ3年11か月と2年10か月を表すものとする。これらを足して「6.09」となるようにしなさい。
解説
年と月を分けて計算します。整数部分を足します。5年となります。
- =INT(A1)+INT(A2)
次に小数部分を足します。0.21つまり21か月となります。
- =MOD(A1,1)+MOD(A2,1)
ところで、21か月は1年と9か月ですが、これは、0.21を0.12で割ったときの商と余りです。
- 0.21÷0.12=1・・・0.09
商と余りは次のようにして求められます。
- =INT*1/0.12)
- =MOD(MOD(A1,1)+MOD(A2,1),0.12)
したがって、さきほどの整数部分と商と余りを全て足すと次のようになります。
- =INT(A1)+INT(A2)+INT*2/0.12)+MOD(MOD(A1,1)+MOD(A2,1),0.12)
<補足>
この計算は0.12を1に繰り上げる12進数の計算ですが、数字を変えれば24進数、60進数などの計算も可能です。
年月のように10進数でない値を10進の小数で入力すると計算が複雑になります。Excelが小数の計算を苦手としていることも併せて考えれば、できるだけ整数で入力し、年と月を分けて計算した方が良いです。
6.整数部分と小数部分の合計
問題
B列の整数部分だけを合計しなさい。また、小数部分だけを合計しなさい。
解説
SUMPRODUCT関数を用いてINT関数の合計を求めます。これで整数部分の合計になります。
- =SUMPRODUCT(INT(B1:B10))
また、MOD関数の合計を求めると、小数部分の合計になります。
- =SUMPRODUCT(MOD(B1:B10,1))
7.負の数の場合
問題
A列に整数や小数を入力した。これらの整数部分と小数部分を求めなさい。
解説
整数部分とは元の数を超えない最大の整数なので、整数の場合はそのままですが、小数の場合は元の数より小さくなります(参考:【Excel】INT関数の入力と修正、元の数を超えない最大の整数とは何か)。
このことはマイナスの数でも同じで、例えば、「-12.345」の整数部分はそれより小さい「-13」となります。「-12」だと元の数より大きくなってしまいます。簡単に言えば、小数点以下を切り捨てて1を引いた数が整数部分となります。
マイナスの数も、プラスの数と同様にINT関数を用いて整数部分を求めることができます。「-12.345」の整数部分は「-13」となります。
- =INT(A2)
小数部分は、元の数から整数部分を引いて求めます。例えば、「-12.345」の小数部分は(-12.345)-(-13)=0.655となります。小数点以下の数ではなく、「小数点以下の数を1から引いた数」になります。
小数部分は、元の数がプラスかマイナスかにかかわらず、必ず0以上1未満の数になります。
- =A2-INT(A2)
別解
MOD関数を用いても同じ答えになります。
- =MOD(A2,1)
<補足>マイナスの数について、単に小数点以下を切り捨てるにはROUNDDOWN関数を使います(参考:【Excel関数】ROUNDUPとROUNDDOWN、切り上げ、切り捨て、四捨五入の練習問題)。
- =ROUNDDOWN(A2,0)
元の数からROUNDDOWNを引けば小数点以下の数を取り出すことができます。
解説は以上です。