消費税のユーザー定義関数化

消費税の計算をする際、毎回「0.08」(2018年7月現在)と入力する場合があります。

f:id:Infoment:20180703065105p:plain

これをユーザー定義関数化すると、このようになります。

例)

Function 消費税()
    消費税 = 0.08
End Function


その結果ワークシートでは、このような表現が可能になります。

f:id:Infoment:20180703065408p:plain

これなら、何を計算しているか分かり易いです。


ところがこの方法には一つ、留意すべき重大な問題点があります。それは、将来的に消費税率が変わった場合の対処です。もし、例えば2020年に消費税率が5%になっていたら、あるいは10%になっていたら?

例)

Function 消費税()
    消費税 = 0.05 'または0.10
End Function

とした時点で、同シート内の過去の案件まで、消費税額が再計算されて変化してしまいます(※VLOOKUP関数などでも、同様の問題があります)。

これを解決する場合、例えば年月日情報を付加する方法があります。あくまで例えばの話ですが、こんな感じです。

Function 消費税(myYear As Long) As Double
    Select Case myYear
        Case Is < 1989
            消費税 = 0
        Case Is < 1997
            消費税 = 0.03
        Case Is < 2014
            消費税 = 0.05
        Case Else
            消費税 = 0.08
    End Select
End Function

f:id:Infoment:20180703070907p:plain

ただ、これはこれで、結構な面倒くささです。消費税のように認知度が高く、入力する手間もさほどでないならば、素直に「0.08」と入力したほうが良いでしょう。
むしろ、円周率πが「=PI()」で関数として定義されているように、当面変わりそうもない物性値の場合に有効かもしれません。

Function g() As Double
' 重力加速度(m/s2)
    g = 9.80665
End Function

参考まで。