3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

Excel VBAで四捨五入をするときの注意

2011年9月2日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

Excelマクロ・VBA 達人養成塾 小川です。
http://www.exvba.com/vb/index.php

今日は、Excelマクロ・VBAについての簡単なTipsを。

Excel VBAに、Round関数という関数があります。

どういう機能かというと、指定された小数点位置で四捨五入した数値を返すものです。

以下、サンプル。

Sub RoundSample()
    Range(“A1″).Value = Round(3.141592, 0) ’3になります
    Range(“A2″).Value = Round(3.141592, 1) ’3.1になります
    Range(“A3″).Value = Round(3.141592, 2) ’3.14になります
    Range(“A4″).Value = Round(3.141592, 3) ’3.142になります
    Range(“A5″).Value = Round(3.141592, 4) ’3.1416になります
End Sub

ここで、一点注意。

上で紹介したVBAのRound関数は、「銀行型丸め」または、「銀行丸め」と呼ばれる、ちょっと特殊な四捨五入をします。

何のことやら?というあなたは、以下を参照。

Sub RoundGinkoSample()
    Range(“B1″).Value = Round(10.5, 0) ’10になります
    Range(“B2″).Value = Round(11.5, 0) ’12になります
    Range(“B3″).Value = Round(12.5, 0) ’12になります
    Range(“B4″).Value = Round(13.5, 0) ’14になります
    Range(“B5″).Value = Round(14.5, 0) ’14になります
End Sub

厳密な四捨五入ではなく、四捨五入する対象の数字がきっかり「5」の場合は、丸めたあとの数値が偶数になるように丸めます。

これでは困る、というときには、Worksheetfunction.Roundを使うと良いでしょう。以下の要領です。

Sub RoundWfuncSample()
    Range(“C1″).Value = WorksheetFunction.Round(10.5, 0) ’11になります
    Range(“C2″).Value = WorksheetFunction.Round(11.5, 0) ’12になります
    Range(“C3″).Value = WorksheetFunction.Round(12.5, 0) ’13になります
    Range(“C4″).Value = WorksheetFunction.Round(13.5, 0) ’14になります
    Range(“C5″).Value = WorksheetFunction.Round(14.5, 0) ’15になります
End Sub

以下の動画で関連する内容がご覧いただけます。

キーワード

コメント

4 thoughts on “Excel VBAで四捨五入をするときの注意

  1. 初めて拝見しました。

    どうしても、実現したいことがあります。

    マクロの中で、ユーザー設定リストを元に決まった順番で並べかえをしたいのですが上手く行きません。

    サンプルコードのご教示願います。

    1. みすずさん、コメントありがとうございます。

      解説動画をいずれ作ります。
      そうしたら、みすずさんさんともシェアします。
      ただし、 エクセルマクロ・VBA基礎編レベルの知識を前提とするので、理解できないかもしれません。
      その場合は基礎編で学ばれることをおすすめします。

      以下の講座もどうぞ。
      エクセルマクロ・VBA導入編(無料)

  2. 初めて拝見しました。

    Msgbox Round(2.5,0)
    が  2  になるとは、今までExcelで会社内のシステムを作って
    約20年間、全く知りませんでした! (私の勉強不足)
    エ~~! と驚きました!
    これからは WorksheetFunction.Round を使います。
    ありがとう、ございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド