Excel VBA 数学教室ではアフィリエイトプログラムを利用して商品を紹介しています。

【Excel】整数・非整数(小数)の判定

セルに入力された値が整数/非整数を判定する方法を紹介します。

【Excel】整数・非整数の判定

まず最初に INT 関数を用いる方法です。INT 関数は

=INT(数値)

のように記述し、引数の小数部分を切り捨てて整数部分だけ返します。たとえば

=INT(2.5)

と入力すると「2」という値が返されます。このとき元の値 2.5 と、小数部分を切り捨てた INT(2.5) の値は当然異なるわけです。すなわち論理式

2.5=INT(2.5)

の返す値は False(偽)となります。これを論理式の結果(真偽)に応じて値を返す IF 関数にネストして

=IF(2.5=INT(2.5),"整数","非整数")

という数式をセルに入力すると「非整数」という文字列が返ります。元の値が整数である場合、たとえば

=IF(10=INT(10),"整数","非整数")

のように記述すると、10 も INT(10) も同じ値ですから、この論理式は真であると判定されて「整数」という文字列が返ることになります。いくつかの数値の整数・非整数をまとめて判定するシートをつくってみましょう。B 列に数値を適当に並べて、セル C3 に

=IF(B3=INT(B3),"整数","非整数")

と入力して、数式をセル C7 までコピーします。

Excelにおける整数と非整数の判定方法

すると上図のように、B 列の数値の判定結果が C 列に並びます。

次は MOD 関数を用いる方法です。MOD 関数は

=MOD(数値,除数)

と記述して、数値を除数で割ったときの余りを返す関数です。たとえば

=MOD(10,4)

と入力すると 10 を 4 で除算したときの余りである「 2 」という値を返します。引数には小数も入れることができて、たとえば

=MOD(7.5,3)

とすれば「 1.5 」という余りが得られます。これは、

被除数 = 除数 × 商 + 余り

という定義によるもので、上の例では

7.5 = 3 × 2 + 1.5

となっています。そこで小数を 1 で割ることを考えます。たとえば 3.14 を 1 で割ったときの余りは

=MOD(3.14,1)

によって「 0.14 」が得られます。被除数が整数ならば 1 で割ったときの余りは 0 になるはずです。つまり、数値を 1 で割ったときの余りが 0 であるか否かで整数・非整数を判定することができます。たとえば

=IF(MOD(9,1)=0,"整数","非整数")

と記述すると、MOD(9,1) = 0 は正しい数式なので、真であるほうの引数の「整数」が表示されます。それでは、MOD 関数で数値の整数判定をするシートをつくってみます。B 列に数値を判定したい並べて、セル C3 に

=IF(MOD(B3,1)=0,"整数","非整数")

と入力して数式を C7 までコピーしてください。

エクセルで整数と非整数を判定する方法2

判定結果が正しいことを確認してください。整数/非整数の判定は数値計算の様々な場面で応用することができます。

エクセルや数学に関するコメントをお寄せください

  1. あとりえこばと より:

    【AI連載小説】数学のリズム、エクセルの旋律(28)
    「エクセルで整数・非整数を判定する方法について話し合います」
     
    Excel VBAサークルのメンバーたちは、Excelを使って整数か非整数を判定する方法について議論していました。真琴が画面を共有し、「皆さん、今日はExcelを使って整数か非整数を判定する方法について考えてみましょう」と言いながら、例としてセルに数値を入力していました。
    研伸が興味津々で手を挙げました。
    「どうやって整数か非整数を判定するんですか?」
    真琴は微笑みながら答えました。
    「Excelには整数を判定する関数があります。その中でも、ISEVEN関数とISODD関数を使うことができます」
    隆治が続けて質問しました。
    「それぞれの関数の使い方はどうなんですか?」
    真琴が画面を操作しながら説明しました。
    「ISEVEN関数は、与えられた数が偶数の場合にTRUE、奇数の場合にFALSEを返します。逆に、ISODD関数は奇数の場合にTRUE、偶数の場合にFALSEを返します」
    月子が考え込みながら言いました。
    「でも、小数点以下の数字はどうなりますか?」
    真琴が親切に説明しました。
    「それはいい質問ですね。これらの関数は整数判定用なので、小数点以下がある場合は常にFALSEを返します」