【Access】四捨五入、切り捨て、切り上げをする方法

アクセス担当のまみです。

 

数値を扱うときって、合計したり、平均したり、割ってみたりと色々ありますね。

データをどんなふうに分析したいかで、計算方法が変わるのですが、端数の処理方法も四捨五入、切り捨て、切り上げと色々あります。

そんな端数処理を毎回計算するのは大変だけど、関数を使って計算してくれるととっても助かりますね。

 

今回は、端数処理を行ってくれる関数についてお伝えしますね。

 

クエリを使って切り捨てをする

 

(はてな君)
四捨五入ってRound関数使えばいいんだよね?
(あいちゃん)
エクセルだとそうなんだけど、アクセスは違うんだなぁ。
(はてな君)
えっ違うの?

 

【Access】Round関数で四捨五入されない?

2018年12月9日

 

 

(あいちゃん)
四捨五入の前に切り捨てからやった方がわかりやすいから切り捨てからやってみよう!

 

切り捨てを行ってくれる関数はInt関数とFix関数の2つあります。

どちらも正の数の切り捨て結果は同じで、負の数の扱いが違います。

 

構文
Int (数値)
Fix(数値)

どちらも小数点以下を切り捨ててくれる関数です。

 

(あいちゃん)
まずはテーブルを準備してね!

 

使用するテーブル

「T_サンプルデータ」

 

クエリで、Int関数、Fix関数をそれぞれ使用してみましょう。

 

リボンの①「作成」タブから②「クエリデザイン」を選択し「T_サンプルデータ」を選びます。

 

 

フィールドに「Int切り捨て: Int([数値])」と「Fix切り捨て: Fix([数値])」を入力しましょう。

 

 

(あいちゃん)
データシートビューにに切り替えてみてね!

 

クエリの結果

 

(はてな君)
ふ~ん負の値の処理結果が違うのか~。

 

(あいちゃん)
そう、だから負の値を使わないならどっちの関数を使っても問題ないんだけど、負の値も使うなら注意してね!

 

(はてな君)
わかった!じゃあ小数点以下第2位を切り捨てってどうやるの?

 

小数点以下第2位の切り捨てはInt関数の場合「 Int([数値]*10)/10」になります。(Fix関数だと「Fix([数値]*10)/10」)

 

(はてな君)
あっなるほど。じゃあ一の位の切り捨てだったら「 Int([数値]/10)*10」だね。

※Fix関数は「Fix([数値]/10)*10

 

(あいちゃん)
そうそう。小数点以下を切り捨てる関数だから切り捨てたい位を調整するんだよ。

 

クエリは「Q_切り捨て」と名前をつけておきましょう。

 

 

クエリを使って四捨五入をする

 

(はてな君)
切り捨ての方法はわかったけど、四捨五入ってどうやるの?
(あいちゃん)
切り捨ての方法にちょっと工夫するんだよ。
(はてな君)

 

「Q_切り捨て」をコピーして「Q_四捨五入」を作成し、デザインビューで開きましょう。

 

フィールドに「Int四捨五入: Int([数値])+0.5」と「Fix四捨五入: Fix([数値])+0.5」を入力しましょう。

 

データシートビューで確認してみましょう。

 

クエリの結果

 

(はてな君)
ふ~ん。0.5を足すのか~。負の値の四捨五入はちょっと微妙だね。

 

(あいちゃん)
そこでSgn関数を使うんだ。

 

構文
Sgn(数値)

 

(あいちゃん)
Sgn関数って数値が正の場合は1、負の場合は-1、0の場合は0を返してくれます。その性質を利用するとFix関数と組み合わせて下のようになるよ!

 

Fix四捨五入: Fix([数値]+0.5*Sgn([数値]))

 

 

(あいちゃん)
データシートビューに切り替えてみてね!

 

クエリの結果

 

(はてな君)
四捨五入ってこうやってするんだ~。

 

クエリは「Q_四捨五入」と名前をつけておきましょう。

 

クエリを使って切り上げをする

 

(あいちゃん)
最後に切り上げなんだけど、切り上げって関数もアクセスにはないんだな~。

 

(はてな君)
切り上げもないんだ~。じゃあ・・・1を足して切り捨てすればいいんだ!

 

(あいちゃん)
そうそう。半分正解かな。じゃあ元の数字が24だったら?
(はてな君)
あれっ1を足して25になっちゃうね・・
(あいちゃん)
そっだから今度は整数の時をのぞいてもらうためにIIf関数を使うんだよ。

 

構文
IIf(条件式、真の場合、偽の場合)

 

Accessクエリの抽出条件でIIf関数を使用する方法

2018年11月20日

 

 

(あいちゃん)
つまり下の式で計算できるってことだよ。「Q_四捨五入」をコピーして「Q_切り上げ」を作成してみてね!

 

Int切り上げ: IIf([数値]=Int([数値]),Int([数値]),Int([数値]+1))

 

 

クエリの結果

 

(はてな君)
そっか。端数処理って切り捨ての関数をうまく使うんだね。

 

クエリは「Q_切り上げ」と名前をつけておきましょう。

 

まとめ

 

アクセスって切り捨ての関数しかないので、四捨五入や切り上げをする時にはちょっと工夫が必要です。

端数処理ができると、色々なデータの処理が自動でできるので便利ですね。

 

ぜひ活用してくださいね!