EXCEL VBA Int Round RoundUp RoundDown (整数・小数点の切り捨てや偶数丸め・四捨五入)
EXCEL VBA Int Round RoundUp RoundDown (整数・小数点の切り捨てや偶数丸め・四捨五入)
VBAプログラムで作成した計算結果が割り切れない場合の数値や小数点以下などの端数が発生した場合、切り捨てや四捨五入など取り決めたルールで計算しなければなりません。その時に使用する関数が、Int関数(整数)・Round関数(偶数丸め)・RoundUp関数(切り上げ)・RoundDown関数(切り捨て)です。計算結果を代入する場合は、変数の型によってInteger型(整数のみ)・Single型・Double型(小数が扱える)など、変数の型によって注意して扱う必要があります。それでは、順番に説明いたします。
関数名 | 書式 | 機能 |
---|---|---|
Int | Int(式) | (式)の値に対して小数点を切り捨てる |
Round | Round(式,桁数) | 指定する桁数に応じて(式)の数値を偶数丸め(銀行丸め) |
Round | Application.WorksheetFunction.Round(式,桁数) | 指定する桁数に応じて(式)の数値を四捨五入する。 |
RoundUp | Application.WorksheetFunction.RoundUp(式,桁数) | 指定する桁数に応じて(式)の数値を切り上げる。 |
RoundDown | Application.WorksheetFunction.RoundDown(式,桁数) | 指定する桁数に応じて(式)の数値を切り捨てる。 |
EXCEL VBA Int関数(整数)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Sub IntSample() Dim Ans_int As Integer '整数を設定 Dim Ans_Single As Single '単精度浮動小数点数型 Dim Ans_Double As Double '倍精度浮動小数点数型 Dim Inp_A, Inp_B As Integer Inp_A = InputBox("数値を入力して下さい") Inp_B = InputBox("割る値を入力して下さい") '通常割り算の結果--------------------------------------------- Ans_int = Inp_A / Inp_B MsgBox "Intの場合" & Ans_int & "です" 'Intでの計算結果 Ans_Single = Inp_A / Inp_B MsgBox "Singleの場合" & Ans_Single & "です" 'Singleでの計算結果 Ans_Double = Inp_A / Inp_B MsgBox "Doubleの場合" & Ans_Double & "です" 'Doubleでの計算結果 '割り算の計算式にIntを使った場合------------------------------- Ans_int = Int(Inp_A / Inp_B) MsgBox "Intの場合" & Ans_int & "です" 'Intでの計算結果 Ans_Single = Int(Inp_A / Inp_B) MsgBox "Singleの場合" & Ans_Single & "です" 'Singleでの計算結果 Ans_Double = Int(Inp_A / Inp_B) MsgBox "Doubleの場合" & Ans_Double & "です" 'Doubleでの計算結果 End Sub |
※結果の2段目は、割り算の結果に対してInt関数で整数に切り捨てた場合の値です。
(クリックして拡大)
EXCEL VBA Round関数(偶数丸め・銀行丸め)WorksheetFunction.Round関数(四捨五入)
※式の部分は、数値でも計算式でも大丈夫です。
※桁数は、小数点以下のどの桁数を偶数丸めするか指定します。(桁数1の場合、小数点第2位を判断して小数点第1に反映します。)
・ Round(式,桁数) ・・・(偶数丸め又は銀行丸め)
・ WorksheetFunction.Round(式,桁数) ・・・(四捨五入)
※下表に【偶数丸め】と【四捨五入】の違いを表しています。A列の数値に対してB列に【偶数丸め】、C列に【四捨五入】で計算しております。
※B列の偶数丸めを求める計算式は、B列 = Round(数値, 0) ‘(偶数丸め)
※C列の四捨五入を求める計算式は、C列 = Application.WorksheetFunction.Round(数値, 0) ‘四捨五入で計算しております。
・【偶数丸め】とは、端数が5より小さい場合は切捨て、5より大きい場合は、切り上げるということろまでは、四捨五入と同じですが、異なっているのは、5の場合の取り扱いが違います。偶数丸めの場合は、偶数に近い方に丸められます。
例1:下表の数値0.5を偶数丸めすると、0の偶数に近いので0になります。
例2:下表の数値1.5を偶数丸めすると、2の偶数に近いので2になります。
例3:下表の数値2.5を偶数丸めすると、2の偶数に近いので2になります。
下記のプログラムは、上記の説明で使用した偶数丸めと四捨五入を比較するサンプルプログラムです。A列の数値を元に、B列には、Round関数を使った偶数丸めを転記し、C列には、ワークシート関数を使ったRound(四捨五入)を転記するサンプルプログラムです。なお、小数点第一位を整数にまとめる形式で設定しております。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
' ' Sub RoundSample02a() '偶数丸めと四捨五入 Dim Num, Ans_Double As Double '倍精度浮動小数点数型 Dim L As Integer For L = 2 To 28 '2行目~28行名まで繰り返します。 Num = Cells(L, "A") Ans_Double = Round(Num, 0) '(偶数丸め) Cells(L, "B") = Ans_Double '計算結果をB列に代入 Ans_Double = Application.WorksheetFunction.Round(Num, 0) '(四捨五入) Cells(L, "C") = Ans_Double '計算結果をC列に代入 Next L End Sub ' |
1 |
(クリックして拡大)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub RoundSample02() Dim Ans_Double As Double '倍精度浮動小数点数型 Dim X, Y, I As Integer X = 7777 Y = 333 I = 5 '小数点位置(小数点5位をセット) For L = 2 To 7 Ans_Double = Round(X / Y, I) ’偶数丸めで計算 Cells(L, "A") = I '小数点第何位をA列に代入 Cells(L, "B") = Ans_Double '計算結果をB列に代入 I = I - 1 '(小数点位置を切り上げる) Next L End Sub |
(クリックして拡大)
下記のサンプルプログラムは、実行前のB列の税抜き価格を元に商品ごとのに、消費税額(8%)をRound関数(偶数丸め)で計算するサンプルプログラムです。消費税10%だと割り切れ易いので、8%で計算しております。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub RoundSample03() Dim JTax, GTax, Gokei As Double Dim I As Integer JTax = 0.08 '消費税(8%) For I = 2 To 7 '2行から7行まで GTax = Cells(I, "B") * JTax '消費税計算 Cells(I, "C") = Round(GTax, 0) '消費税の計算をRound関数(銀行丸め)で計算 Cells(I, "D") = Cells(I, "B") + Cells(I, "C") '税抜き+消費税=合計 Next I Range("B8") = "=SUM(B2:B7)" '税抜きの合計表示 Range("B8").AutoFill Destination:=Range("B8:D8") 'AutoFillを使いB8のSUM関数をC列・D列に複写します。 End Sub |
(クリックして拡大)
EXCEL VBA WorksheetFunction.RoundUp関数(切り上げ:ワークシート関数)
※式の部分は、数値でも計算式でも大丈夫です。
※桁数は、小数点以下のどの桁数を切上げるか指定します。(桁数1の場合、小数点第2位を判断して小数点第1に反映します。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub RoundUpSample01() Dim Ans_Double As Double '倍精度浮動小数点数型 Dim X, Y, I As Integer X = 123456 Y = 234 I = 2 '小数点位置 Ans_Double = X / Y 'RoundUp無しで計算 Cells(2, "A") = Ans_Double Ans_Double = Application.WorksheetFunction.RoundUp(X / Y, I) 'RoundUpで計算(小数第2位) Cells(2, "B") = Ans_Double End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub RoundUpSample02() Dim Ans_Double As Double '倍精度浮動小数点数型 Dim X, Y, I As Integer X = 77777 Y = 333 I = 5 '小数点位置(小数点5位をセット) For L = 2 To 7 Ans_Double = Application.WorksheetFunction.RoundUp(X / Y, I) Cells(L, "A") = I '小数点第何位をA列に代入 Cells(L, "B") = Ans_Double '計算結果をB列に代入 I = I - 1 '(小数点位置を切り上げる) Next L End Sub |
下記のサンプルプログラムは、実行前のB列の税抜き価格を元に商品ごとのに、消費税額(8%)をRoundUp関数(切上げ)で計算するサンプルプログラムです。消費税10%だと割り切れ易いので、8%で計算しております。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub RoundUpSample03() Dim JTax, GTax, Gokei As Double Dim I As Integer JTax = 0.08 '消費税 For I = 2 To 7 '2行から7行まで GTax = Cells(I, "B") * JTax '消費税計算 Cells(I, "C") = Application.WorksheetFunction.RoundUp(GTax, 0) '消費税の計算をRoundUp関数(切り上げ)で計算 Cells(I, "D") = Cells(I, "B") + Cells(I, "C") '税抜き+消費税=合計 Next I Range("B8") = "=SUM(B2:B7)" '税抜きの合計表示 Range("B8").AutoFill Destination:=Range("B8:D8") 'AutoFillを使いB8のSUM関数をC列・D列に複写します。 End Sub |
(クリックして拡大)
EXCEL VBA WorksheetFunction.RoundDown関数(切り下げ:ワークシート関数)
※式の部分は、数値でも計算式でも大丈夫です。
※桁数は、小数点以下のどの桁数を四捨五入するか指定します。(桁数1の場合、小数点第2位を判断して小数点第1に反映します。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub RounddownSample01() Dim Ans_Double As Double '倍精度浮動小数点数型 Dim X, Y, I As Integer X = 1234567 Y = 234 I = 2 '小数点位置 Ans_Double = X / Y 'RoundUp無しで計算 Cells(2, "A") = Ans_Double Ans_Double = Application.WorksheetFunction.RoundDown(X / Y, I) 'RoundDown有りで計算(小数第2位) Cells(2, "B") = Ans_Double End Sub |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub RounddownSample02() Dim Ans_Double As Double '倍精度浮動小数点数型 Dim X, Y, I As Integer X = 777777 Y = 333 I = 5 '小数点位置(小数点5位をセット) For L = 2 To 7 Ans_Double = Application.WorksheetFunction.RoundDown(X / Y, I) Cells(L, "A") = I '小数点第何位をA列に代入 Cells(L, "B") = Ans_Double '計算結果をB列に代入 I = I - 1 '(小数点位置を切り上げる) Next L End Sub |
下記のサンプルプログラムは、実行前のB列の税抜き価格を元に商品ごとのに、消費税額(8%)をRoundDown関数(切上げ)で計算するサンプルプログラムです。消費税10%だと割り切れ易いので、8%で計算しております。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub RounddownSample03() Dim JTax, GTax, Gokei As Double Dim I As Integer JTax = 0.08 '消費税 For I = 2 To 7 '2行から7行まで GTax = Cells(I, "B") * JTax '消費税計算 Cells(I, "C") = Application.WorksheetFunction.RoundDown(GTax, 0) '消費税の計算をRoundDown関数(切り下げ)で計算 Cells(I, "D") = Cells(I, "B") + Cells(I, "C") '税抜き+消費税=合計 Next I Range("B8") = "=SUM(B2:B7)" '税抜きの合計表示 Range("B8").AutoFill Destination:=Range("B8:D8") 'AutoFillを使いB8のSUM関数をC列・D列に複写します。 End Sub |
(クリックして拡大)
以上で、Int(整数)・Round(偶数丸め)・RoundUp(切り上げ)・RoundDown(切り下げ)の説明でした。サンプルプログラム等を参照して、作成する方法を覚えて下さい。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。