今回もプチレッスンということで、1行マクロ的な簡単なものを
ご紹介したいと思います。
表題のマクロで<四捨五入する方法>ですが、これに関係するのは
主には実数計算をするエンジニアリング系の方ですね。お金の計算等
整数処理が主な事務系の方はあまり関係しないかとは思いますが、
もしかすると、時期に消費税が8%になる(実に中途半端な数字に・・)
ということのようなので、お金の計算時に端数(1円未満)が問題になって
くる場合もあるかも知れませんので、今回はこのテーマをお話しします。
それで、端数の扱いというのは基本的に「切り捨て」「切り上げ」
「四捨五入」と、まあこの3つしかないわけですが、消費税の場合
で言えば、1円未満の端数が出た時の法律上の決まりはないということ
なので、大体のお店などは切り捨てで会計されるわけですが、中には
私がよく行くガソリンスタンドなんかの伝票をよく見てみると四捨五入
になっていたりします。
当然ですが、そうしたお店のレジ計算というのは、レジの機械の中に
組み込まれたプログラムによって計算が行われているわけです。
特にその辺の端数計算というものの扱いを気にしていないシステムの
場合には、そのプログラム言語の仕様によってそれが変わってきます。
で、ここで勉強しているマクロのVBA言語の場合で言うと
それが「切り捨て」となっています。これは感覚的に言えば、VBAの
場合のデフォルトは端数切り捨てです。
(プログラム言語によってそれが「四捨五入」になっているものも
あれば、中には「切り上げ」になるものもあります。)
というわけで、法律上の規定が無いということで特に厳密に気にして
いないレジ計算の場合は、プログラムの言語依存で切捨てなのか四捨
五入かということが決まります。
話がそれましたが、
一般的にはVBAで四捨五入したい場合には、ExcelのROUND関数という
ものを使うと思うわけですが、今回は特に応用がきくように(Accessとか
五捨六入とかの)オーソドックスな昔ながらのこのやり方というものを
ご紹介します。
その方法というのは、言葉で言い表すと
「0.5を足してから切り捨てる」
というだけです。これを数式で書くと、
a = Int(d + 0.5)
となります。(Intは少数点以下を切捨てする関数です。)
例えば、
d = 5.4 だったとすると、答えは a = 5 で
d = 5.5 なら 答えは a = 6 となります。
なので、もし「五捨六入」をしたい場合なら 0.4 を足せばよい
という具合になります。
また、「少数点の第2位」を四捨五入したいという場合なら、
「10倍してから0.5を足して切り捨てて10で割って戻す」
というようにしますので、これを数式で書くと
b = Int((d * 10 + 0.5)) / 10
このようになります。
なお、負数の場合にはFix関数というものを使うことになりますが
これは少々話がややこしくなるので今回は割愛させていただき
またいずれ。
最新の画像[もっと見る]
- 80代の年寄りにVBAが出来るわけがない? 2年前
- 鎌倉殿の13人ー義経の逆落としの地形 3年前
- 鎌倉殿の13人ー義経の逆落としの地形 3年前
- 鎌倉殿の13人ー義経の逆落としの地形 3年前
- 鎌倉殿の13人ー義経の逆落としの地形 3年前
- 鎌倉殿の13人ー義経の逆落としの地形 3年前
- 関ケ原の合戦場をデジタルマップで見ると 3年前
- 関ケ原の合戦場をデジタルマップで見ると 3年前
- 関ケ原の合戦場をデジタルマップで見ると 3年前
- 上田城の3Dデジタルマップ 3年前