数値の操作

#1 四捨五入

使用例

'-----------------------------------------------------------------
'概要   四捨五入
'引数   dblNum   : 数値または任意の有効な数式
'       intKeta  : 求める小数点桁数(省略可)
'返値   小数点桁数の四捨五入の値を返す
'-----------------------------------------------------------------
Function SHISYAGONYU(dblNum As Double, Optional intKeta As Integer) As Double

    Dim dblNo As Double
    
    If IsMissing(intKeta) = True Then
        intKeta = 0
    End If
    
    dblNo = 10 ^ intKeta
    
    SHISYAGONYU = Int(dblNum * dblNo + 0.5) / dblNo

End Function

Sub 四捨五入()
    Debug.Print SHISYAGONYU(20.553, 0)
    Debug.Print SHISYAGONYU(20.553, 1)
    Debug.Print SHISYAGONYU(20.553, 2)
End Sub

<実行結果>
 21 
 20.6 
 20.55 

#2 切り上げ

使用例

'-----------------------------------------------------------------
'概要   切り上げ
'引数   dblNum   : 数値または任意の有効な数式
'       intKeta  : 求める小数点桁数(省略可)
'返値   小数点桁数の切り上げ値を返す
'-----------------------------------------------------------------
Function KIRIAGE(dblNum As Double, Optional intKeta As Integer) As Double

    Dim dblNo As Double
    
    If IsMissing(intKeta) = True Then
        intKeta = 0
    End If
    
    dblNo = 10 ^ intKeta
    
    KIRIAGE = Int(dblNum * dblNo + 1) / dblNo

End Function

Sub 切り上げ()
    Debug.Print KIRIAGE(20.456, 0)
    Debug.Print KIRIAGE(20.456, 1)
    Debug.Print KIRIAGE(20.456, 2)
End Sub

<実行結果>
 21 
 20.5 
 20.46 

#3 切り捨て

使用例

'-----------------------------------------------------------------
'概要   切り捨て
'引数   dblNum   : 数値または任意の有効な数式
'       intKeta  : 求める小数点桁数(省略可)
'返値   小数点桁数の切り捨て値を返す
'-----------------------------------------------------------------
Public Function KIRISUTE(dblNum As Double, Optional intKeta As Integer) As Double

    Dim dblNo As Double
    
    If IsMissing(intKeta) = True Then
        intKeta = 0
    End If
    
    dblNo = 10 ^ intKeta
    
    KIRISUTE = Int(dblNum * dblNo) / dblNo
    
End Function

Sub 切り捨て()
    Debug.Print KIRISUTE(20.456, 0)
    Debug.Print KIRISUTE(20.456, 1)
    Debug.Print KIRISUTE(20.456, 2)
End Sub

<実行結果>
 20
 20.4
 20.45

#4 消費税計算(外税)

使用例

'-----------------------------------------------------------------
'概要   消費税計算(外税)
'引数   curKingaku  : 対象金額
'    inrTaxRate  : 消費税率
'    Hasusyori   : 端数処理(省略可)
'-----------------------------------------------------------------
Enum Hasu
    Hshisyagonyu = 0
    Hkiriage = 1
    Hkirisute = 2
End Enum


Function SHOUHIZEI(curKingaku As Currency, inrTaxRate As Integer, _
                    Optional Hasusyori As Hasu) As Currency

    Dim curTax As Currency

    If IsMissing(Hasusyori) = True Then
        Hasusyori = 0
    End If
  
    curTax = curKingaku * (inrTaxRate / 100)
    
    Select Case Hasusyori
    Case 0                              '四捨五入
        SHOUHIZEI = CLng(curTax)
    Case 1                              '切り上げ
        SHOUHIZEI = CLng(curTax + 0.5)
    Case 2                              '切り捨て
        SHOUHIZEI = Int(curTax)
    End Select
    
'※CLngの値範囲-2,147,483,648〜2,147,483,647を超えるとエラーが発生します。
'  また、CLng(0.5)は、0を返します。但し、CLng(0.4 + 0.1)は、1を返します。
End Function


Sub 消費税()	'消費税率5%とします

    Debug.Print SHOUHIZEI(9999, 5)            '四捨五入
    Debug.Print SHOUHIZEI(9999, 5, Hkiriage)  '切り上げ
    Debug.Print SHOUHIZEI(9999, 5, 2)         '切り捨て
End Sub


<実行結果>
 500 
 500 
 499

#5 消費税計算(内税)

使用例

'-----------------------------------------------------------------
'概要   消費税計算(内税)
'引数   curKingaku   : 対象金額
'    inrTaxRate   : 消費税率
'    Hasusyori    : 端数処理(省略可)
'-----------------------------------------------------------------
Enum Hasu
    Hshisyagonyu = 0
    Hkiriage = 1
    Hkirisute = 2
End Enum


Function UCHIZEI(curKingaku As Currency, inrTaxRate As Integer, _
                    Optional Hasusyori As Hasu) As Currency

    Dim curTax As Currency

    If IsMissing(Hasusyori) = True Then
        Hasusyori = 0
    End If
    
    curTax = curKingaku - (curKingaku / (1 + (inrTaxRate / 100)))
    
    Select Case Hasusyori
    Case 0                              '四捨五入
        UCHIZEI = CLng(curTax)
    Case 1                              '切り上げ
        UCHIZEI = CLng(curTax + 0.5)
    Case 2                              '切り捨て
        UCHIZEI = Int(curTax)
    End Select
End Function


Sub 内税計算()	'消費税率5%とします

    Debug.Print UCHIZEI(10000, 5)                   '四捨五入
    Debug.Print UCHIZEI(10000, 5, shisyagonyu)      '四捨五入
    Debug.Print UCHIZEI(10000, 5, 1)                '切り上げ
    Debug.Print UCHIZEI(10000, 5, 2)                '切り捨て
End Sub

<実行結果>
 476
 476
 477
 476


数値の操作

ここで使用した関数

  • IsMissing
  • Int
  • CLng

その他の算術関数

  • Abs
  • Atn
  • Cos
  • Exp
  • Fix
  • Log
  • Nz
  • Rnd
  • Sgn
  • Sin
  • Sqr
  • Tan