🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Excel INT・TRUNC・MOD — 小数を落とし、余りを求める

|

Excel INT・TRUNC・MOD — 小数を落とし、余りを求める

要点INTTRUNC はどちらも数値の小数部分を取り除きますが、負の数で 意見が分かれます。INTマイナス無限大の方向に丸めるので(INT(-2.5)-3)、 一方 TRUNC は単にゼロへ向けて切り落とすので(TRUNC(-2.5)-2)。 正の数では両者は同一です。MOD は割り算後の余りを返します。そして Excel の落とし穴は、 余りが数値ではなく除数の符号を引き継ぐことです。だから =MOD(-1, 3)-1 ではなく 2 になります。この一点が大半のプログラミング言語と異なり、MOD で最も多い驚きです。 3つともすべてのバージョンで動作します。

=INT(-2.5)        ' -> -3   床: マイナス無限大の方向
=TRUNC(-2.5)      ' -> -2   切り落とし: ゼロの方向
=MOD(-1, 3)       ' -> 2    余りは除数の符号を引き継ぐ

この3つは、「整数部分を取り出す」と「残りを取り出す」の主力です。一見ささいに思えます — 負の数が現れるか、別のツールから数式を移植してくるまでは。すると答えが1だけずれたり、 目に見える理由もなく符号が反転したりします。どちらの驚きも、各関数がどちらの方向に 傾くかから生まれます。このガイドは、そのメンタルモデルから始めて、そこから導かれるワナへ 進みます。

なお、日本語版 Excel でも関数名は INT・TRUNC・MOD と英語表記のままです。

このガイドで学べること

  • メンタルモデル:ゼロへ向けて切り落とす vs マイナス無限大へ向けて床を取る
  • なぜ INTTRUNC は正で一致し、負で分かれるのか
  • TRUNC の第2引数 — 指定した小数桁に切り落とす
  • 余りとしての MOD、そして誰もがつまずく除数符号のルール
  • 日常の2つの勝ち筋:日付と時刻の分離、シマ模様
  • 判断のしどころ:床、切り落とし、余り

メンタルモデル:切り落とし vs 床

INTTRUNC も「小数を取り除く」のですが、数値が負のとき、答える問いが違います。

  • TRUNC切り落とす — 小数点以下の桁を削除し、符号は保ちます。常にゼロへ向けて。 TRUNC(2.9)2TRUNC(-2.9)-2
  • INT床を取る — その数値以下で最大の整数を返します。常にマイナス無限大へ向けて。 INT(2.9)2INT(-2.9)-3
' 正: 同一
=INT(2.9)    ' -> 2
=TRUNC(2.9)  ' -> 2
' 負: 分かれる
=INT(-2.9)   ' -> -3   (-2.9 より下の整数)
=TRUNC(-2.9) ' -> -2   (.9 を削除するだけ)

正の数なら、どちらを使っても違いに気づくことはありません。負の数が現れた瞬間 — 損失、気温、座標 — 両者は袂を分かち、間違った方を選ぶと「負で1だけずれる」静かなバグに なります。

ルール:負の数で何を意味したいかで選ぶ

名前さえつければ、判断は単純です。「数直線で常に下へ丸める」 — 真の床、暦年齢や 階段の段数の数え方のような — を意味するなら INT を使います。「整数部分を符号ごと そのまま残す」 — 貸方にも借方にもなりうる金額から銭を切り落とす — を意味するなら TRUNC を使います。

=INT(-1.2)     ' -> -2   「1段まるごと下」(床)
=TRUNC(-1.2)   ' -> -1   「整数部分」(切り落とし)

よい見分け方:-1.2 の結果がもっと負になって不満なら、欲しかったのは TRUNC です。 あまり負でなくなって不満なら、欲しかったのは INT です。これは ROUNDDOWN と 真の床を分ける、ゼロ方向 vs 無限大方向の同じ分かれ目です — Excel ROUND・ROUNDUP・ROUNDDOWN を参照してください。

TRUNC の隠れた第2引数

INT とは違い、TRUNC は省略可能な第2引数を取ります。切り落とす前に何桁の小数を 残すか、です。これは丸めではなく、カットします。

=TRUNC(3.14159, 2)   ' -> 3.14    小数2桁を残す、丸めなし
=TRUNC(3.149, 2)     ' -> 3.14    3.15 ではない — 切り落とすだけで決して丸めない
=TRUNC(1234.5, -2)   ' -> 1200    負: 百の位へ切り落とす

正の数では TRUNC(x, 2)ROUNDDOWN(x, 2) と一致しますが、意図が違います。 TRUNC は「ここでカット」と言い、ROUNDDOWN は「ゼロへ向けて丸める」と言います。 切り落とし(truncation)を明確に意図しているとき — ID の先頭数桁を取る、あるいは 意図的に精度を捨てる — TRUNC はそれをはっきり示します。

MOD:余り、そして符号のワナ

MOD(number, divisor) は割った後の残り — 余り — を返します。=MOD(7, 3)1 です。7 = 2×3 + 1 だからです。単純です、負の数が入ってくるまでは。

=MOD(7, 3)     ' -> 1
=MOD(-1, 3)    ' -> 2     -1 ではない
=MOD(1, -3)    ' -> -2    符号は除数に従う

Excel では、余りは除数の符号を引き継ぎますMODnumber - divisor * INT(number / divisor) と定義されており、その INT がマイナス無限大へ 向けて床を取るからです。これは C、Java、VBA の Mod 演算子とは異なります。それらでは 余りは被除数に従います(だから VBA の -1 Mod 3-1)。数式やマクロを移植したら 剰余の結果が符号反転した — その理由はこれです。言語スタイルの挙動が必要なときは、 MOD が一致すると仮定せず、明示的に計算してください。

日常の2つの勝ち筋

日付を時刻から分離する。 Excel は日時を、整数部分が日付、小数部分が時刻の数値として 格納します。INTMOD がそれを引き離します。

=INT(A2)       ' -> 日付 (時刻を落とす)
=MOD(A2, 1)    ' -> その日の時刻 (日付を落とす)

シマ模様、あるいはN行ごとのグループ化。 行番号に対する MOD は繰り返しの周期を 生み、条件付き書式やグループ化にぴったりです。

=MOD(ROW(), 2) = 0          ' 偶数行ごとに TRUE -> 縞模様の行
=MOD(ROW() - 2, 3) = 0      ' 先頭から3行ごとに TRUE
=MOD(value, 2) = 0          ' value は偶数か?

この2つのパターン — 日付/時刻の分離と周期的なグループ化 — こそ、INTMOD が 「小数を落とす」をはるかに超えて真価を発揮する場面です。

判断のしどころ:床、切り落とし、余り

3つのきれいな選択肢です。符号を保った整数部分が欲しい? TRUNC(指定の小数桁へ 切り落とすには第2引数を使う)。マイナス無限大へ向かう真の床、あるいは日時から日付を 取り出したい? INT残ったもの — 周期的なパターン、偶数/奇数、その日の時刻、 「N個ごと」 — が欲しい? MOD、ただし余りは除数の符号に従うことを忘れずに。 唯一の本当のワナは、負になりうるデータに対して TRUNC を意図したのに INT を (あるいはその逆を)使うことです。だから、習慣ではなくデータの符号に関数を選ばせましょう。

ExcelMaster はどう役立つか

これらの背後にある意図はたいてい具体的です — このタイムスタンプから時刻を取り除く3行ごとに印をつける整数ユニットを取って余りを別に処理する — そしてバグは 負の数の方向と MOD の符号ルールです。ExcelMaster は文章を正しい関数に対応づけます。 床や日付には INT、符号付きの値の整数部分を残すには TRUNC、周期や余りには符号の挙動を 考慮した MOD を。あなたは数値から何が欲しいかを言うだけ。それが、負の数でも壊れない 版を書きます。

よくある質問

Excel で INT と TRUNC の違いは?

どちらも小数を落とします。INT はマイナス無限大の方向に丸める(真の床)ので、 INT(-2.5)-3 です。TRUNC はゼロへ向けて切り落とすので、TRUNC(-2.5)-2 です。正の数では同一で、負の数でのみ異なります。

なぜ MOD は負の入力に対して正の数を返すのですか?

Excel の MOD は余りに除数の符号を与えるので、=MOD(-1, 3)2 です。これは VBA や大半のプログラミング言語とは異なります。それらでは余りは被除数に従います。

日時セルから時刻部分を取り出すには?

その日の時刻には =MOD(A2, 1)、日付には =INT(A2) を使います。Excel は日付を数値の 整数部分に、時刻を小数部分に格納しています。

丸めずに小数点以下2桁に切り捨てるには?

=TRUNC(number, 2) を使います。ROUND と違い、余分な桁を丸めるのではなくカットするので、 =TRUNC(3.149, 2)3.14 です。

数値が偶数か奇数かを調べるには?

除数を2にして MOD を使います。=MOD(A2, 2) = 0 は偶数なら TRUE、奇数なら FALSE です。(Excel には専用の ISEVENISODD 関数もあります。)

検証環境

検証環境: Excel 365(Windows 11)— 最終確認 2026-06-27

関連ガイド: Excel ROUND・ROUNDUP・ROUNDDOWN · Excel MROUND・CEILING・FLOOR · Excel IF · Excel SUMIFS