EXCEL VBA Int Round RoundUp RoundDown (整数・小数点の切り捨てや四捨五入)
EXCEL VBA Int Round RoundUp RoundDown (整数・小数点の切り捨てや四捨五入)
●はじめに
VBAプログラムで作成した計算結果が割り切れない場合の数値や小数点以下などの端数が発生した場合、切り捨てや四捨五入など取り決めたルールで計算しなければなりません。その時に使用する関数が、Int関数(整数)・Round関数(四捨五入)・RoundUp関数(切り上げ)・RoundDown関数(切り捨て)です。計算結果を代入する場合は、変数の型によってInteger型(整数のみ)・Single型・Double型(小数が扱える)など、変数の型によって注意して扱う必要があります。それでは、順番に説明いたします。
関数名 | 書式 | 機能 |
---|---|---|
Int | Int(式) | (式)の値に対して小数点を切り捨てる |
Round | Round(式,桁数) | 指定する桁数に応じて(式)の数値を四捨五入する。 |
RoundUp | Application.WorksheetFunction.RoundUp(式,桁数) | 指定する桁数に応じて(式)の数値を切り上げる。 |
RoundDown | Application.WorksheetFunction.RoundDown(式,桁数) | 指定する桁数に応じて(式)の数値を切り捨てる。 |
EXCEL VBA Int関数(整数)
●書式の説明 ※式の部分は、数値でも計算式でも大丈夫です。
Int(式) 例:Int(1.5) は、1になります。(小数点以下の切り捨て)
●プログラム説明
次のサンプルプルグラムは、通常の割り算の結果を表示した場合と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 |
●実行結果
入力値に対して割り算を行った結果が、そのまま各変数の値で表示した結果と計算結果に対してInt関数を付け加えて各変数の値で表示した比較結果を求めます。
●入力値 ※プログラム実行後、①数値を入力しますここでは、「12345」を入力します。次に割る値を入力しますここでは、「234」を入力します。 (クリックして拡大)
●実行後 ※結果の1段目は、上記の入力した値を通常に割り算した値です。
※結果の2段目は、割り算の結果に対してInt関数で整数に切り捨てた場合の値です。
(クリックして拡大)
※結果の2段目は、割り算の結果に対してInt関数で整数に切り捨てた場合の値です。
(クリックして拡大)
EXCEL VBA Round関数(四捨五入)
●書式の説明
※式の部分は、数値でも計算式でも大丈夫です。
※桁数は、小数点以下のどの桁数を四捨五入するか指定します。(桁数1の場合、小数点第2位を判断して小数点第1に反映します。)
※式の部分は、数値でも計算式でも大丈夫です。
※桁数は、小数点以下のどの桁数を四捨五入するか指定します。(桁数1の場合、小数点第2位を判断して小数点第1に反映します。)
Round(式,桁数) 例:Round(123.45,1) は、123.5になります。
●プログラム説明(Round:サンプルプログラム①)
下記のプログラムは、指定した数値に割り算を行いRoundを使った場合とRoundを使わない場合の結果をセルに比較表示させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub RoundSample() Dim Ans_Double As Double '倍精度浮動小数点数型 Dim X, Y, I As Integer X = 12345 Y = 234 I = 2 '小数点位置 Ans_Double = X / Y 'Round無しで計算 Cells(2, "A") = Ans_Double Ans_Double = Round(X / Y, I) 'Round有りで計算(小数第2位) Cells(2, "B") = Ans_Double End Sub |
●実行前 ※(クリックして拡大)
●実行後 ※A列には、計算結果をRound無しでセルに代入・B列には、計算結果をRound有り(小数点第2位)をセルに代入した。 (クリックして拡大)
●プログラム説明(Round:サンプルプログラム②)
下記のプログラムは、X:=7777とY:=333の割り算を行い、小数点第5位⇒0位までのRound関数を使用した場合の一覧表を作成します。A列には、小数点第何位の数値。B列には、A列で指定したRound関数(小数点位置)の結果をセルに代入しています。
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 |
●実行前 (クリックして拡大)
●実行後 ※A列に小数点位置が表示されます。 B列にA列で指定したRound関数の小数点位置での「四捨五入」結果が表示されました。(クリックして拡大)
●プログラム説明(Round:サンプルプログラム③) 消費税計算
下記のサンプルプログラムは、実行前の下表にある商品毎の税抜き単価を元に、消費税額をRound関数で求めます。
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 '消費税 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 |
●実行前 ※下表を元にRound関数を使って消費税額および合計金額を求めます。(クリックして拡大)
●実行後 ※税抜価格を元に消費税額を求める事ができました。 (クリックして拡大)
EXCEL VBA RoundUp関数(切り上げ)
●書式の説明
※式の部分は、数値でも計算式でも大丈夫です。
※桁数は、小数点以下のどの桁数を四捨五入するか指定します。(桁数1の場合、小数点第2位を判断して小数点第1に反映します。)
※式の部分は、数値でも計算式でも大丈夫です。
※桁数は、小数点以下のどの桁数を四捨五入するか指定します。(桁数1の場合、小数点第2位を判断して小数点第1に反映します。)
Application.WorksheetFunction.RoundUp(式,桁数) 例:Application.WorksheetFunction.RoundUp(123.45,1) は、123.5になります。
●プログラム説明(RoundUp:サンプルプログラム①)
下記のプログラムは、指定した数値に割り算を行いRoundUpを使った場合とRoundUpを使わない場合の結果をセルに表示させます。
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 |
●実行前 ※(クリックして拡大)
●実行後 ※A列には、計算結果をRoundUP無しでセルに代入・B列には、計算結果をRoundUP有り(小数点第2位)でセルに代入した。 (クリックして拡大)
●プログラム説明(RoundUp:サンプルプログラム②)
下記のプログラムは、X:=77777とY:=333の割り算を行い、小数点第5位⇒0位までのRoundUp関数を使用した場合の一覧表を作成します。A列には、小数点第何位の数値。B列には、A列で指定したRoundUp関数(小数点位置)の結果をセルに代入しています。
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 |
●実行前 ※A列には、小数点位置。B列にはRoundUp関数の結果が表示されます。 (クリックして拡大)
●実行後 ※A列に小数点位置が表示されます。 B列にA列で指定したRoundUp関数の小数点位置での「切り上げ」結果が表示されました。(クリックして拡大)
●プログラム説明(RoundUp:サンプルプログラム③) 消費税計算
下記のサンプルプログラムは、実行前の下表にある商品毎の税抜き単価を元に、消費税額をRoundUp関数で求めます。
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 |
●実行前 ※下表を元にRoundUp関数を使って消費税額および合計金額を求めます。(クリックして拡大)
●実行後 ※税抜価格を元に消費税額を求める事ができました。 (クリックして拡大)
EXCEL VBA RoundDown関数(切り下げ)
●書式の説明
※式の部分は、数値でも計算式でも大丈夫です。
※桁数は、小数点以下のどの桁数を四捨五入するか指定します。(桁数1の場合、小数点第2位を判断して小数点第1に反映します。)
※式の部分は、数値でも計算式でも大丈夫です。
※桁数は、小数点以下のどの桁数を四捨五入するか指定します。(桁数1の場合、小数点第2位を判断して小数点第1に反映します。)
Application.WorksheetFunction.RoundDown(式,桁数) 例:Application.WorksheetFunction.RoundDown(123.45,1) は、123.4になります。
●プログラム説明(RoundDown:サンプルプログラム①)
下記のプログラムは、指定した数値に割り算を行いRoundDownを使った場合とRoundDownを使わない場合の結果をセルに表示させます。
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 |
●実行前 ※(クリックして拡大)
●実行後 ※A列には、計算結果をRoundDown無しでセルに代入・B列には、計算結果をRoundDown有り(小数点第2位)でセルに代入した。 (クリックして拡大)
●プログラム説明(RoundDown:サンプルプログラム②)
下記のプログラムは、X:=777777とY:=333の割り算を行い、小数点第5位⇒0位までのRoundDown関数を使用した場合の一覧表を作成します。A列には、小数点第何位の数値。B列には、A列で指定したRoundDown関数(小数点位置)の結果をセルに代入します。
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 |
●実行前 (クリックして拡大)
●実行後 ※A列に小数点位置が表示されます。 B列にA列で指定したRoundDown関数の小数点位置での「切り上げ」結果が表示されました。(クリックして拡大)
●プログラム説明(RoundDown:サンプルプログラム③) 消費税計算
下記のサンプルプログラムは、実行前の下表にある商品毎の税抜き単価を元に、消費税額をRoundDown関数で求めます。
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 |
●実行前 ※下表を元にRoundDown関数を使って消費税額および合計金額を求めます。(クリックして拡大)
●実行後 ※税抜価格を元に消費税額を求める事ができました。 (クリックして拡大)
最後まで、ご覧いただきまして誠に有難うございました。
以上で、Int(整数)・Round(四捨五入)・RoundUp(切り上げ)・RoundDown(切り下げ)の説明でした。サンプルプログラム等を参照して、作成する方法を覚えて下さい。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。
以上で、Int(整数)・Round(四捨五入)・RoundUp(切り上げ)・RoundDown(切り下げ)の説明でした。サンプルプログラム等を参照して、作成する方法を覚えて下さい。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。