PR

Accessによる切り捨て・四捨五入・切り上げ

全般
スポンサーリンク

Accessで数値を処理する方法

Accessでは、目的によって数値の処理方法を使い分ける必要があります。

この記事では、切り捨て・四捨五入・切り上げを中心に解説します。

目的が決まっている場合は、次の内容を参考にしてください。

  • 小数点以下を切り捨てたい → 切り捨ての方法
  • 数値を四捨五入したい → 四捨五入の方法
  • 小数点以下を切り上げたい → 切り上げの方法
  • 表示する桁数を変えたい → Format関数
  • 条件によって計算を変えたい → IIf関数
  • Nullを含む値を計算したい → Nz関数

ExcelではそれぞれROUNDDOWN関数、ROUND関数、ROUNDUP関数があり、簡単に処理をしてくれますが、Accessにはこれらに相当する関数がありません。このため、「INT関数」を活用し数値処理をする必要がありますので、今回はその方法を紹介したいと思います。

サンプルデータ

サンプルデータ作成に当たり「数値テーブル」を作成し、一つのフィールドを作成します。フィールド名は「数値」、データ型は「数値型」、フィールドサイズは「倍精度浮動小数点型」とします。そして、次のデータを入力しておきます。

■サンプルデータ

数値
1.23
1.37
1.52
1.78

今回は、小数第1位及び小数第2位に対してその処理方法を見ていきましょう。

INT関数

小数以下の処理をする際に用いる関数として、「INT関数」があります。

Int(数値)
INT 関数の書式には、次の引数があります。

INT関数は、指定された数値を最も近い整数に切り捨てる処理をします。したがって、例えばINT(1.89)の場合は「1」が結果として返されます。

切り捨て処理

小数点以下の処理としてまずは「切り捨て」について考えてみましょう。「INT関数」それ自体が小数第1位の切り捨てをします。したがって、上記のように「1.89」を引数としてINT関数に与えることで、「1」が返ってきます。

さて、小数第2位以下で切り捨てをしたい場合はどうすれば良いでしょうか?これは、INT関数に与える引数を桁単位で乗じて処理をし、その後に改めて桁単位で除する方法があります。

具体的な例として、「1.89」を小数第2位で切り捨てる場合は、「INT(1.89*10)/10」とします。この式の処理を順番に考えていきます。

① 1.89*10 = 18.9
② INT(18.9) = 18・・・INT関数で小数点以下を切り捨て
③ 18/10 = 1.8

いかがでしょうか?上のプロセスのように、小数第N位で切り捨てをしたい場合は、次のように表記することができます。

INT(数値*10N-1)/10N-1

四捨五入処理

次に、小数点以下の処理として「四捨五入」について考えてみましょう。まずは、小数第1位に対する四捨五入を考えます。「INT関数」はそれ自体が小数第1位の切り捨てをします。そこで、対象となる数値に「0.5」を足した後、INT関数を適用します。すると、小数第1位の値が0.1~0.4のものについては繰り上がりされず、整数値に変化はありませんが小数第1位の値が0.5~0.9のものについては繰り上がりして整数値が1つ増えます。このため、INT関数を用いると小数第1位で四捨五入した結果が得られることになります。

これらを踏まえて先ほどと同じように、「1.89」を使って四捨五入の処理をするには、「INT(1.89+0.5)」と記載します。

① 1.89+0.5 = 2.39
② INT(2.39) = 2・・・小数第1位で四捨五入した値に一致

さて、小数第2位以下で四捨五入をしたい場合はどうすれば良いでしょうか?これも切り捨て処理と基本は同様です。INT関数に与える引数を桁単位で乗じた後に0.5を足して処理をし、その後に改めて桁単位で除する方法です。

具体的な例として、「1.89」を小数第2位で四捨五入場合は、「INT(1.89*10+0.5)/10」とします。この式の処理を順番に考えていきます。

① 1.89*10 = 18.9
② 18.9+0.5 = 19.4
② INT(19.4) = 19・・・INT関数で小数点以下を切り捨て
③ 19/10 = 1.9

いかがでしょうか?上のプロセスのように、小数第N位で四捨五入をしたい場合は、次のように表記することができます。

INT(数値*10N-1+0.5)/10N-1

数値の表示形式も変更したい場合

上記内容は数値そのものを処理する方法ですが、帳票やフォーム上で「小数点以下を表示しない」「桁数を揃えて表示する」といった場合には、Format関数を利用する方法もあります。

【Access VBA】四捨五入で結果がズレない!Round・Int・Format関数の正しい使い分けと端数処理
Access VBAで四捨五入や整数表示、小数点処理を行う実践テクニックを解説。Round関数、Int関数、Format関数の違いや実務活用例、Copilotを利用したVBA開発効率化の方法を紹介します。

「計算結果を変更したい」のか「表示方法だけを変更したい」のかによって、適した方法を使い分けることが重要です。

切り上げ処理

最後に切り上げ処理を見ていきます。これは先に紹介した四捨五入とほぼ同じ考え方が適用でき、「0.5」の代わりに「0.9」を用います。

まずは、小数第1位に対する切り上げを考えます。「INT関数」はそれ自体が小数第1位の切り捨てをします。そこで、対象となる数値に「0.9」を足した後、INT関数を適用します。すると、小数第1位の値が繰り上がり整数値が1つ増え、INT関数により小数第1位で切り上げした結果が得られることになります。

これらを踏まえて先ほどと同じように、「1.23」を使って切り上げの処理をするには、「INT(1.23+0.9)」と記載します。

① 1.23+0.9 = 2.13
② INT(2.13) = 2・・・小数第1位で切り上げした値に一致

さて、小数第2位以下で切り上げをしたい場合はどうすれば良いでしょうか?これも四捨五入処理と同様で、INT関数に与える引数を桁単位で乗じた後に0.9を足して処理をし、その後に改めて桁単位で除する方法です。

「1.23」を小数第2位で切り上げする場合は、「INT(1.23*10+0.9)/10」とします。この式の処理を順番に考えていきます。

① 1.23*10 = 12.3
② 12.3+0.9 = 13.2
② INT(13.2) = 13・・・INT関数で小数点以下を切り捨て
③ 13/10 = 1.3

いかがでしょうか?上のプロセスのように、小数第N位で切り上げをしたい場合は、次のように表記することができます。

INT(数値*10N-1+0.9)/10N-1

クエリによる結果確認

これまでの内容をサンプルデータを用いて実際に処理をしてみます。

図1に示すように「数値テーブル」の各値に対して小数第1位及び小数第2位に対して、切り捨て、四捨五入、切り上げ処理をするクエリを作成しました。

図1 小数処理のクエリ

クエリの各フィールドは次のようにしています。

・数値
・小数第1位切り捨て: Int([数値])
・小数第2位切り捨て: Int([数値]*10)/10
・小数第1位で四捨五入: Int([数値]+0.5)
・小数第2位で四捨五入: Int([数値]*10+0.5)/10
・小数第1位で切り上げ: Int([数値]+0.9)
・小数第2位で切り上げ: Int([数値]*10+0.9)/10

このようにクエリを作成し結果を確認したものが図2になります。

図2 小数処理の結果

条件によって計算方法を変更する場合

実務では、すべてのデータを同じ方法で処理するのではなく、条件によって計算方法を変更したい場合があります。

例えば、「ある条件を満たす場合だけ計算する」「値によって表示内容を変更する」といった処理です。

Accessでは、IIf関数を使って条件に応じた処理を記述できます。

Accessで条件に応じた処理をする方法 IIf文の活用
データ処理をする際に有用な関数としてIIf文がありますので、サンプルを交えながら紹介します。

Nullを含むデータを計算する場合

Accessで数値を計算するときに注意したいのがNullです。

対象となるフィールドにNullが含まれていると、想定した計算結果にならない場合があります。

このような場合には、Nz関数を使ってNullを別の値に置き換えて計算する方法があります。

AccessによるNullを含んだ計算 Nz関数の活用
データ処理に際し、Nullを代替するためのNz関数について紹介します。

集計や金額計算を行う場合には、丸め処理だけでなくNullの扱いについても確認しておくとよいでしょう。

計算結果をクエリで集計する場合

切り捨てや四捨五入などの数値処理を理解したら、次はAccessのクエリを使ってデータを集計することもできます。

売上額や数量などをグループ単位で集計したい場合には、集計クエリを利用すると便利です。

集計クエリを活用! Accessクエリによるデータ集計
Accessクエリでは、データを集計する機能を持っています。SQL文ではレコードをグループ化してデータを集計しますが、この操作をクエリで自動的に行ってくれます。Access選択クエリとSQL文の関係 の記事で、選択クエリのSQL文を紹介しましたが、集計時にはどのような構文になるかも紹介したいと思います。

まとめ

今回はAccessによる小数の処理方法について紹介をしました。Excelと違って、INT関数を活用することで小数の処理を実現しました。

この方法はExcelに慣れていると意外と気づきにくいものですが、一度処理方法を覚えてしまえば、様々な場面で活用できると思います。

Accessでは、切り捨て・四捨五入・切り上げ以外にも、数値やデータを加工するためのさまざまな関数が利用できます。

やりたい処理に応じて、次の記事も参考にしてください。

数値や日付の表示形式を変更したい

Format関数を利用すると、数値の小数点以下の表示や日付の表示形式などを変更できます。

【Access VBA】四捨五入で結果がズレない!Round・Int・Format関数の正しい使い分けと端数処理
Access VBAで四捨五入や整数表示、小数点処理を行う実践テクニックを解説。Round関数、Int関数、Format関数の違いや実務活用例、Copilotを利用したVBA開発効率化の方法を紹介します。

条件によって処理を変更したい

条件に応じて計算結果や表示内容を変更する場合には、IIf関数を利用できます。

Accessで条件に応じた処理をする方法 IIf文の活用
データ処理をする際に有用な関数としてIIf文がありますので、サンプルを交えながら紹介します。

Nullを含む数値を計算したい

Nullが含まれるデータを計算する場合には、Nz関数を利用して値を置き換える方法があります。

AccessによるNullを含んだ計算 Nz関数の活用
データ処理に際し、Nullを代替するためのNz関数について紹介します。

計算したデータを集計したい

数値を加工するだけでなく、項目ごとの合計や件数などを求める場合にはAccessの集計クエリが便利です。

集計クエリを活用! Accessクエリによるデータ集計
Accessクエリでは、データを集計する機能を持っています。SQL文ではレコードをグループ化してデータを集計しますが、この操作をクエリで自動的に行ってくれます。Access選択クエリとSQL文の関係 の記事で、選択クエリのSQL文を紹介しましたが、集計時にはどのような構文になるかも紹介したいと思います。

スポンサーリンク

Kindle+にサインアップして無料体験に登録する
Kindle+に登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

  1. 堀江 佳子 より:

    こんにちは。こちらの記事を参考にさせていただき、「切り上げ処理」をしていました。ところが、小数点第1位が0の場合は切り捨てになってしまいます。(例)Int(1.02+0.9)=1
    IIf(Int(データ)=データ,データ,Int(データ+1))という式を他で見つけ、これなら解決かと思ったのですが、元データを通貨型にして誤差が出ないようにしても、見た目には整数のものが+1されてしまいます。
    何かいい方法はないでしょうか。

    • Asuma より:

      こんにちは、HPをご覧いただきありがとうございます。ご指摘のとおり、小数第1位は0で、第2位に数字がある場合に当HPで紹介している方法では処理できませんので、IIfによる分岐処理が必要ですね。
      さて、通貨型にしても同様の処理がされるということですが、例えば「1.2」という値を持たせたとき、見かけ上は「¥1」となりますがテーブルが保持している値は「1.2」のままであるため、切り上げ処理がされます。
      何かいい方法は?、ということですが、具体的にどのような処理をされたいのでしょうか?

  2. はたぴー より:

    Int(1.02+0.9)=1→int(1.02+0.99)=2
    単純な繰り上げをしたい場合小数点以下が多ければ大体において問題は無いかと思います。

    • Asuma より:

      ご意見をありがとうございました。
      複雑な条件を盛り込む場合はVBAで処理してしまうのも手かもしれませんね。

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