Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項  サイト内検索
 

数値を指定位置で四捨五入・5の倍数に切り上げする方法:SampleFile106



Accessには四捨五入を行う組み込み関数が用意されていませんので、Function関数を用いて 独自に作成するしか手がありません。今回、四捨五入を行う関数と、5の倍数に切り上げを行う関数を ご紹介します。また、次回の「数値を指定位置で切り捨て・切り上げする方法」も併せてご覧ください。

サンプルテーブルの作成

下記のようなサンプルテーブルを作成します。

ID 数値
1 1.0021
2 0.00001
3 666.0185
4 2130
5 4500.321
8 0.567
9 95523
10 10.65
11 10.15
12 0.56
13 15
14 692.0123
15 45.012
16 0.001
17 0.00123
18 999.01
19 0.0563
20 0.953
21 0
22 0.01

四捨五入を行う独自関数

Functionプロシージャを作成します。

Function ShiSha5(dbl対象 As Double, lng桁数 As Long) As Double
    
    Dim lng数値 As Long
    lng数値 = 10 ^ Abs(lng桁数) ' --- A
    
        If lng桁数 > 0 Then
            ShiSha5 = Int(dbl対象 * lng数値 + 0.555555) / lng数値
        Else
            ShiSha5 = Int(dbl対象 / lng数値 + 0.555555) * lng数値
        End If
        
End Function
解説
  1. 引数の「lng桁数」に注意して下さい。一の位は-1、十の位は-2、百の位は-3、…という具合です。小数点第1位は0、第2位は1、第3位は2、…という具合です。

考え方
  1. 考え方は、10にAbs関数で得た桁数の絶対値を桁数乗掛け合わせ(^)、引数のプラス、マイナスによって、条件節を利用し算出しています。
  2. つまり、四捨五入する桁の数値を、必ず小数点第一位にあるようにして処理を行っています。そして、0.555555をプラスし、Int関数を用いて小数点以下を切り捨てます。
  3. なお、この0.555555の部分は小数点以下にどの程度の"精度"を求めるかによって変わります。整数であれば 0.5でも問題ありません。
  4. 例えば、0.5として 10.45 を小数点第2位で四捨五入すると、10.5となるべきところが 10.4 になります。
  5. このような考え方の理解は難しいですが、慣れ親しんで下さい。
  6. なお、Access2000には四捨五入を行う組み込み関数である、Round関数 が用意されていますが、これにも上記の問題が発生しますので注意が必要です。

整数(>0)を5の倍数に切り上げる独自関数

例えば、13なら15、99なら100、224なら225と云う具合に5の倍数に丸めます。下記にサンプルプロシージャを記述します。特に難しいことは無く、クエリ等に対象数値と何桁の位を切り上げるのかを指定します。

Function Seishu5(dbl対象 As Double, lng桁数 As Long) As Long

    Dim by数値 As Byte
    
    dbl対象 = Int(dbl対象) ' --- A
    by数値 = CByte(Right(dbl対象, lng桁数))

    If dbl対象 > 0 Then

        Select Case by数値
            Case 0 To 4
                Seishu5 = dbl対象 + (5 - by数値)
            Case 5
                Seishu5 = dbl対象
            Case 6 To 9
                Seishu5 = dbl対象 + (10 - by数値)
            End Select

    Else

        Seishu5 = dbl対象
    
    End If

End Function
解説
  1. 整数をdbl対象としています。Int関数で整数に置き換えています。小数点以下は、切り捨てています。
考え方
  1. 考え方は、Int関数で対象数値を全て整数に置き換えます。
  2. そして、対象(数値)からRight関数を使ってその桁にある数値(lng数値)を引き出します。
  3. 次にSelectCaseステートメントで3段階に区分し、処理していきます。
  4. なお、このプロシージャは整数を対象にしていますので、小数点を含む数値の場合は正しく計算されません。ご注意下さい。

クエリフィールドに配置

下記のようにクエリをデザインビューで開き、プロシージャを記述します。

実行結果

クエリ結果(※四捨五入は、小数点第2位を基準に行っています)

ID 数値 四捨五入 整数5倍数 
1 1.0021 1 5
2 0.00001 0 0
3 666.0185 666 670
4 2130 2130 2135
5 4500.321 4500.3 4505
8 0.567 0.6 0
9 95523 95523 95525
10 10.65 10.7 15
11 10.15 10.2 15
12 0.56 0.6 0
13 15 15 15
14 692.0123 692 695
15 45.012 45 45
16 0.001 0 0
17 0.00123 0 0
18 999.01 999 1000
19 0.0563 0.1 0
20 0.953 1 0
21 0 0 0
22 0.01 0 0

関連ページ

ページの先頭へ 前ページへ戻る

 


数値を指定位置で四捨五入・5の倍数に切り上げする方法:SampleFile106


 

-Microsoft Access Club-

cPanel / WHM コントロールパネル の操作方法を解説するWEBサイトです。
cPanelコントロールパネルの操作方法を解説中・・・。