スポンサーリンク

VBA小数点以下切り捨てを繰り返す方法

VBA繰り返し小数点以下切り捨て処理Excel-VBA

エクセル関数で小数点以下切り捨てをするのはRoundDown関数を使えば簡単にできますが、せっかくエクセルVBAを使っているのだから無駄な数式を書いておくのって気が引けますよね。

ユーザーフォームに配置したコマンドボタン一発でセルの値を転記して、尚且つ小数点以下切り捨てを一括して処理する方法をボウリングのリーグ戦での成績表でも使っているので、書いてみました。

使用実用例の詳細はここでは省略します。

このVBAはここで使用しています

ボウリング成績表メインメニュー画面~LTBリーグ編
「ボウリング成績表~LTBリーグ編」の操作マニュアルです。作成しているエクセルファイルは公開しておりませんが、作成方法は掲載しております。エクセル関数とエクセルVBAの組み合わせなので、特別なソフトを使っているわけではありません。エクセル2007と2016では動作確認済みです。
スポンサーリンク

小数点以下を切り捨てるApplication.RoundDown

RoundDownといえば、エクセル関数でもおなじみなのでエクセルで様々な表を作っている方には、使い方には慣れたものだと思います。

ところが、VBAで使おうとすると難しくなってしまいますが、ちょっと工夫すれば簡単に使えるようになります。

ここではボウリングのリーグ戦の個人成績でアベレージ(平均点)を競うことが多いのですが、アベレージという事で基本的に小数点以下の数字になります。

ところが、ハンデキャップ(HDCP)を算出する時は小数点以下切り捨てをして整数にして算出すという事なので、このページで紹介している小数点以下切り捨て、しかも参加者全員分となると、繰り返し作業が必要になるのです。

やりたい作業は以下の通りです。

  1. 参加者のアベレージをVBAで別のセルに転記する
  2. 転記されたセルには小数点以下の数字
  3. 小数点以下を切り捨てて整数にする
  4. 整数になった数字を転記されたセルに書き戻す

こんな作業を1人なら簡単ですが、参加者全員分となるとものすごく面倒なので、次にこの作業を繰り返すVBAコードを付け足す。

波乗りアヒル
波乗りアヒル

ね、結構面倒な作業でしょう。

基本的なApplication.RoundDown使い方

エクセルの本やネットにも書かれていますが、小数点以下切り捨てにしたいセルが1か所や数か所の時には、

Range(“A1”).Value = Application.RoundDown(Range(“B1”).Value, 0)

とVBAコードを書けば、セルA1の値がセルB1に記載されます。

一番最後の,0を小数点第1位までにするならば,1とすれば完成です。

問題は、たくさんあった場合です。

最初にも書きましたが、ボウリングのリーグ戦での成績表では参加者が20人~40人ぐらいいますので、このVBAコードを繰り返し書くのはとても大変。

そこで次に繰り返し処理と組み合わせてVBAコードを書けば、簡単に作業完了です。

VBA小数点以下切り捨てを繰り返す方法

特別難しいVBAコードを使うわけではありません。

多く使われているFor~Nextを組み合わせてあげるだけなのです。

実際に使っているVBAコードを抜粋してみました。

For i = 3 To 42
Cells(i + 100, 4).Value = Application.RoundDown(Cells(i + 100, 4).Value, 0)
Next i
  1. 繰り返し処理の変数「i」を宣言し3~42を指定する
  2. セルi+100行目の4列目(セルE103)の値はセルi+100行目の4列目(セルE104)の値を小数点以下を切り捨てて書き換える
  3. 繰り返す(セルE142)まで

これは、たまたまAVEが記載されているのがセルE103~E142までなの変数iに100を足しています。

理由は変数iが3~42を指定しているからです。

変数iをこの数字に指定したのは、これ以外にも一緒に名前なのデータも取り込んでいる為です。

こうするだけでVBA小数点以下切り捨てを繰り返す事ができるようになりました。

Excel-VBAもくじへ

コメント