【Excel】TRUNC関数とROUNDDOWN関数とINT関数の違い

Excelでは出力結果が似た関数が多くあります。今回はその中で数値の切り捨てに関する関数であるTRUNC関数、ROUNDDOWN関数、INT関数の違いについて確認したいと思います。

マイクロソフトによる各関数の説明

マイクロソフトのサイトではTRUNC関数、ROUNDDOWN関数、INT関数についてそれぞれ以下のように説明されています。

  • TRUNC関数
    • 数値の小数部を切り捨てて、整数または指定した桁数に変換します。
  • ROUNDDOWN関数
    • 数値を指定された桁数で切り捨てます。
  • INT関数
    • 指定された数値を最も近い整数に切り捨てます。

どうでしょう?違いは分かりましたか?正直違いが非常に分かりにくいと思います。

各関数の引数の違い

各関数の引数は以下のとおりです。INT関数だけは数値だけをとり、TRUNC、ROUNDDOWN関数はともに数値と桁数を引数にとります。TRUNC関数の桁数が省略可能であることだけが違うだけです。

  • TRUNC(数値, [桁数])
  • ROUNDDOWN(数値, 桁数)
  • INT(数値)

TRUNC関数、ROUNDDOWN関数、INT関数の違い

実際に実例を見ていただけると分かるのですが、TRUNC関数とROUNDDOWN関数は桁数の引数が省略可能かどうかの違いしかありません

実際の例を以下に示します。桁数省略以外は違いは見られませんね。

TRUNC関数とROUNDDOWN関数の正の数値の場合の違い

ABCDE
1対象数値
251.567
3
4取得したい内容TRUNC関数ROUNDDOWN関数TRUNC関数の数式ROUNDDOWN関数の数式
51.少数を切り捨て(桁数省略)51桁数省略できない=TRUNC(A2)
62.少数を切り捨て5151=TRUNC(A2,0)=ROUNDDOWN(A2,0)
73.少数点第一位より後を切り捨て51.551.5=TRUNC(A2,1)=ROUNDDOWN(A2,1)
84.少数点第四位より後を切り捨て51.56751.567=TRUNC(A2,4)=ROUNDDOWN(A2,4)
95.一の位を切り捨て5050=TRUNC(A2,-1)=ROUNDDOWN(A2,-1)
106.十の位を切り捨て00=TRUNC(A2,-2)=ROUNDDOWN(A2,-2)
117.百の位を切り捨て00=TRUNC(A2,-3)=ROUNDDOWN(A2,-3)

TRUNC関数とROUNDDOWN関数の負の数値の違い

ABCDE
1対象数値
2-51.567
3
4取得したい内容TRUNC関数ROUNDDOWN関数TRUNC関数の数式ROUNDDOWN関数の数式
51.少数を切り捨て(桁数省略)-51桁数省略できない=TRUNC(A2)
62.少数を切り捨て-51-51=TRUNC(A2,0)=ROUNDDOWN(A2,0)
73.少数点第一位より後を切り捨て-51.5-51.5=TRUNC(A2,1)=ROUNDDOWN(A2,1)
84.少数点第四位より後を切り捨て-51.567-51.567=TRUNC(A2,4)=ROUNDDOWN(A2,4)
95.一の位を切り捨て-50-50=TRUNC(A2,-1)=ROUNDDOWN(A2,-1)
106.十の位を切り捨て00=TRUNC(A2,-2)=ROUNDDOWN(A2,-2)
117.百の位を切り捨て00=TRUNC(A2,-3)=ROUNDDOWN(A2,-3)

TRUNC関数(またはROUNDDOWN関数)とINT関数の違いは以下のとおりです。

  • INT関数は数値を切り捨てて整数しか返すことができません(TRUNC関数、ROUNDDOWN関数は少数第一位で切り捨てや十の位での切り捨てなどが可能です)。
  • 整数への切り捨てにおいて、正の数値ではTRUNC関数(またはROUNDDOWN関数)とINT関数に違いはありません。
  • 整数への切り捨てにおいて、負の数値ではTRUNC関数(またはROUNDDOWN関数)とINT関数に違いがでます。

TRUNC関数(またはROUNDDOWN関数)とINT関数の負の数値の場合の違い

実際にどう違いがあるかを見てみましょう。以下のように、負の数値の場合のINT関数は直観と違う形になります。

ABCDE
1対象数値TRUNC関数INT関数TRUNC関数の数式INT関数の数式
251.5675151=TRUNC(A2)=INT(A2)
3-51.567-51-52=TRUNC(A3)=INT(A3)

Excelでの数値の切り捨て方によりこのような違いが起きる訳ですが、プログラマーでない限り、直観的な結果が得られるのがTRUNC関数とだけ覚えておいて差し支えないでしょう。

コメント

タイトルとURLをコピーしました