ACCESS 関数で切り上げする方法
ACCESSで数値を扱う場合、小数点以下の値の扱いには注意が必要です。
切り上げ処理をする際、ExcelであればROUNDUP関数を利用できますが、ACCESSにはこの関数がありません。
今回は、関数で切り上げする方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
小数点以下を切り上げする関数処理
ACCESSで小数点以下を切り上げする場合は以下のように記述します。
クエリの場合とVBAの場合で若干異なるので、それぞれ示しますね。
クエリの場合
IIf(Int([元の値])=[元の値],[元の値],Int([元の値])+1)
VBAの場合
Public Function kiriage(x As Double)
If Int(x) = x Then
kiriage = x
Else
kiriage = Int(x) + 1
End If
End Function
VBAの方はFunctionで作成しているので、kiriageに切り上げした値が格納されます。
以下、詳細に説明します。
ACCESSでの小数点以下切り上げ処理の考え方
ACCESSで小数点以下の切り上げ、切り捨てをする際に利用できる関数は、Int関数です。
Int関数は小数点以下を切り捨てる関数で、以下の構文で利用します。
Int ( 元の値 )
引数に元の値を指定するだけのシンプルな関数です。
でも単純にIntを使っただけでは切り捨てですよね。
ここから切り上げ処理にします。Intで切り捨てた値に1を足すことで切り上げした値を作ることができます。
つまり
Int ( 元の値 ) + 1
で切り上げるということです。
しかし、この方法には欠点があります。
元の値が整数だった場合はInt関数を使っても数値が変わらないので、結果的に1つ大きな数になってしまうという点です。
これを防ぐために条件分岐させ、元の値が整数だった場合はその値のまま、元の値が整数でなかった場合はInt関数で小数点以下を切り捨てたうえで+1する、という処理にしているわけです。
この条件分岐の記述方法がクエリとVBAで異なるため、最初に2つのパターンをご紹介しました。
クエリでの切り上げ
クエリでの切り上げについて詳しく説明します。
サンプルテーブルとして、以下を準備しました。
この、元の値を切り上げするクエリを作成します。
クエリをデザインビューで作成し、2列目に「切り上げ」というフィールドを作成します。
切り上げフィールドに入力する内容は以下の通りです。
切り上げ: IIf(Int([元の値])=[元の値],[元の値],Int([元の値])+1)
IIf関数を使って、Int関数で切り捨てた値と元の値を比較して、同じだった場合は整数、異なる場合は小数点以下の値があると判定しています。
その後、整数であれば元の値のまま、小数点以下の値があればInt関数で切り上げた値に+1して切り上げ処理を行っています。
データシートビューで結果を見てみましょう。
このように、正しく切り上げ処理がされていることがわかります。
VBAでの切り上げ
次に、VBAでの切り上げ処理です。
こちらは以下のFunctionプロシージャを作成しました。
Public Function kiriage(x As Double)
If Int(x) = x Then
kiriage = x
Else
kiriage = Int(x) + 1
End If
End Function
引数xに値を入れて実行すると、kiriageに切り上げ後の値が返されるプロシージャです。
こちらも処理の考え方は同じで、If分を使って、Int(x)とxが同じか否かを判定して、元の値(x)が整数か否かを判定しています。
整数であればkiriageにはxをそのまま代入し、小数点以下の値があればInt関数で切り上げた値に+1したものをkiriageに代入しています。
イミディエイトウィンドウで実行して結果を見てみましょう。
このように、xの値に応じて正しく切り上げ処理が行われています。
以上、関数で切り上げする方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。