エクセル練習問題:数値を丸める(VBA)


スポンサードリンク

問題   topへ

解答例   topへ

問題1の解答例    topへ


B C D E F
2 商品 2009年 2010年 2011年 四捨五入
3 りんご 5,548 4,975 5,843 5,455.3
4 みかん 4,957 4,356 5,067 4,793.3
5 バナナ 6,875 7,246 6,521 6,880.7
  1. ワークシート関数のAVERAGE関数とROUND関数を利用した例です。
    • VBAのRound関数は銀行型丸めを行いますので、算術的四捨五入はワークシート関数を使うと便利です。
    Sub test_01()
      Dim i As Long
      Dim ave As Double
        For i = 3 To 5
          '平均値を求めます
          ave = Application.WorksheetFunction.Average(Range(Cells(i, 3), Cells(i, 5)))
         '四捨五入します
          Cells(i, 6).Value = Application.WorksheetFunction.Round(ave, 1)
        Next i
        Range("F3:F5").NumberFormatLocal = "#,##0.0"
    End Sub
    • VBAのRound関数の結果の一例
      Sub test01a()
        Dim i As Long
          For i = 1 To 5
            ’整数値に丸めます
            Cells(i, 2).Value = Round(Cells(i, 1))
          Next i
      End Sub
    • VBAのRound関数では12.5,14.5の結果が銀行型丸めで行われているのがわかります。
  2. 計算式で求める例です。(計算する値は正の整数値であるとの前提のコードです)
    • 計算上で必要な桁数は小数第2位までですの100倍して整数で計算します。
      平均値に+5して、/10で切り捨てることで四捨五入ができます。
      さいごに、元の桁数に戻すため/10としています。
    Sub test11()
      Dim i As Long, j As Long
      Dim goukei As Long, ave As Long
        For i = 3 To 5
          goukei = 0
          For j = 3 To 5
            goukei = goukei + Cells(i, j)
          Next j
          ave = goukei * 100 / 3 + 5
          Cells(i, 6).Value = Int(ave / 10) / 10
        Next i
        Range("F3:F5").NumberFormatLocal = "#,##0.0"
    End Sub

問題2の解答例    topへ


B C D E F
2 商品 2009年 2010年 2011年 切り上げ
3 りんご 5,548 4,975 5,843 5,455.4
4 みかん 4,957 4,356 5,067 4,793.4
5 バナナ 6,875 7,246 6,521 6,880.7
  1. ワークシート関数のAVERAGE関数とROUNDUP関数を利用した例です。
    Sub test_01()
      Dim i As Long
      Dim ave As Double
        For i = 3 To 5
          '平均値を求めます
          ave = Application.WorksheetFunction.Average(Range(Cells(i, 3), Cells(i, 5)))
         '切り上げします
          Cells(i, 6).Value = Application.WorksheetFunction.RoundUp(ave, 1)
        Next i
        Range("F3:F5").NumberFormatLocal = "#,##0.0"
    End Sub
  2. 計算式で求める例です。(計算する値は正の整数値であるとの前提のコードです)
    • 計算上で必要な桁数は小数第2位までですの100倍して整数で計算します。
      平均値にマイナスにして、 /10 でIntで切り捨てることで切り上げができます。
      さいごに、元の桁数に戻すためマイナスにして /10 としています。
    • INT関数はマイナス値の場合、数値をより小さいほうに丸めますので、マイナス値では切り上げることができます。
      よって、一旦、マイナス値にしてから計算しています。
      • なお、ave*(-1) と書いてもよいのですが、 -ave の方が簡易に感じます。
        -Int(-ave / 10) / 10 は (Int(ave*(-1) / 10) / 10)*(-1) を簡易化?したものです。
    Sub test12()
      Dim i As Long, j As Long
      Dim goukei As Currency, ave As Currency
        For i = 3 To 5
          goukei = 0
          For j = 3 To 5
            goukei = goukei + Cells(i, j)
          Next j
         '平均値を求めます
          ave = goukei * 100 / 3
         '切り上げします
          Cells(i, 9).Value = -Int(-ave / 10) / 10
        Next i
        Range("F3:F5").NumberFormatLocal = "#,##0.0"
    End Sub

問題3の解答例    topへ


B C D E F
2 商品 2009年 2010年 2011年 切り捨て
3 りんご 5,548 4,975 5,843 5,455.3
4 みかん 4,957 4,356 5,067 4,793.3
5 バナナ 6,875 7,246 6,521 6,880.6
  1. ワークシート関数のAVERAGE関数とROUNDDOWN関数を利用した例です。
    Sub test_01()
      Dim i As Long
      Dim ave As Double
        For i = 3 To 5
          '平均値を求めます
          ave = Application.WorksheetFunction.Average(Range(Cells(i, 3), Cells(i, 5)))
          '切り捨てします
          Cells(i, 6).Value = Application.WorksheetFunction.RoundDown(ave, 1)
        Next i
        Range("F3:F5").NumberFormatLocal = "#,##0.0"
    End Sub
  2. 計算式で求める例です。(計算する値は正の整数値であるとの前提のコードです)
    • 計算上で必要な桁数は小数第2位までですの100倍して整数で計算します。
      平均値を/10したものを切り捨てることで必要桁数での切捨てができます。
      さいごに、元の桁数に戻すため/10としています。
    Sub test13()
      Dim i As Long, j As Long
      Dim goukei As Currency, ave As Currency
        For i = 3 To 5
          goukei = 0
          For j = 3 To 5
            goukei = goukei + Cells(i, j)
          Next j
          '平均値を求めます
          ave = goukei * 100 / 3
          '切り捨てします
          Cells(i, 9).Value = Int(ave / 10) / 10
        Next i
        Range("F3:F5").NumberFormatLocal = "#,##0.0"
    End Sub

スポンサードリンク



よねさんのExcelとWordの使い方エクセル練習問題:目次|数値を丸める(VBA)