源泉税額を、マクロ関数で作る
ワークシートに、if関数で税額計算を作ることもできますが、マクロシートに関数を定義すると、もっと便利に使えます。これはマクロになるので、シートを開くたびに警告が出ます。しかし、使い勝手はマクロ関数の方が便利です。計算の根拠は、こちらを参考にして下さい。ここでは、関数の内容を説明します。 (平成19年1月より、別表第三が改定されました。以下の内容は、19年1月より適用されるものです。)
関数の構造 関数名を、gensenとし、引数は給与額と扶養家族数の2つにします。
select case文(スイッチ文)
マクロ関数ではVBAの関数が使え、分岐が多くなるようなとき、select case文が使えます。
select case 引数
case is 条件式 または、case 数値1 to 数値2で条件を書き、このときの処理を指定します。このようなcase文を並べ、最後を end selectで閉めます。Function gensen(q4, f4) (q4とf4という2つの引数を持つ、gensenという関数を定義します。)
Select Case q4 (q4の大きさで、caseを分けます。<=は以下の意味。)
Case Is <= 135416
kz = 54167 (変数kzは、控除額です。)
Case 135417 To 149999 (次は、135417以上・149999以下のcaseです。)
kz = q4 * 0.4
Case 150000 To 299999 (同様に、case文で条件を整理します。)
kz = q4 * 0.3 + 15000
Case 300000 To 549999
kz = q4 * 0.2 + 45000
Case 550000 To 833333
kz = q4 * 0.1 + 100000
Case Is >= 833334
kz = q4 * 0.05 + 141667
End Select (ここまでで、最初のcase文は終わりです。)
kz = kz + 31667 * (f4 + 1) (扶養控除を、人数を使って計算します。)
q40 = q4 - kz (変数q40に、控除後の給与額を代入します。)Select Case q40 (今度は、q40の値によって処理を分岐させます。)
Case Is <= 162500
z0 = q40 * 0.05 (変数z0を、計算します。これが、税額になります。)
Case 162501 To 275000 (以下、平成19年1月より改定の数値です。)
z0 = q40 * 0.1 - 8125
Case 275001 To 579166
z0 = q40 * 0.2 - 35625
Case 579167 To 750000
z0 = q40 * 0.23 - 53000
Case 750001 To 1500000
z0 = q40 * 0.33 - 128000
Case Is > 1500000
z0 = q40 * 0.4 - 233000
End Select (これで、第2のcase文が終わります。)
gensen = Int((z0 + 5) / 10) * 10 (税額z0を10の位で四捨五入し、これを関数の値にします。)
End Function (関数の定義終了)以上を、モジュールシートに記述して、関数の出来上がりです。使うときは、
=gensen(A1,B1)のように、使います。モジュールシートの編集の仕方は、ここを参考にして下さい。
if関数とともに、サンプルのファイルがあります。ダウンロードして、下さい。*追加 賞与の源泉税計算について、表と関数で自動計算する方式について載せました。こちらをご覧下さい。
●戻る