僕はお金の入出金についてはExcelのシートで管理するようにしていて、入金予定や出金予定を入れると、年間の資金繰りがわかるようにしてあります。元々はフリーになった当初に「今の手持ちのお金で何ヶ月猶予が作れるのか」を把握したくて始めた習慣で、多少金回りが良くなった後も、欠かさずずっと続けているものです。
このシートには当然各案件に対する報酬額と実際の入金額が記載してあるんですが、「まあ大まかに把握できてればいいや」ってことで、源泉徴収される金額についてはけっこうアバウトで済ませていました(資金繰りがわかればいいから)。
せっかく源泉徴収税について昨日計算ルールを確認したわけなので……
このシートにそのルールを用いた「源泉徴収税を計算してくれる関数」を作って、帳簿入力にも転用できる正確な数値を求められるようにしたいと思います。
Excel VBAでコードを書くには
Excelを起ち上げて Alt + F11キーを押すと、Visual Basicエディタが起動します。ここにVisual Basicの記法を用いてコードを書けば、それをシート内から関数として呼び出せるようになるわけですね。
Officeドキュメントに埋め込まれたマクロは一時期コンピュータウイルスの温床になっていたので、そのせいか標準の保存形式である.xslx形式だとマクロの含まれるドキュメントを保存することができません。「名前をつけて保存」画面を開き、ファイル形式を.xlsmに変えて保存しなおしましょう。
消費税抜きの額を対象に源泉徴収税額を計算するコードはこんな感じ
まずは消費税抜きの額を対象に源泉徴収税額を算出する関数を作ります。関数名はGENSEN_ZEINUKIでいいや。
Const SHIKIICHI As Long = 1000000 ' 消費税抜き会計で源泉徴収税額を算出する Function GENSEN_ZEINUKI(nUriage As Long, Optional nSZEIRITSU As Integer = 10) As Long Dim nZeigaku As Double Dim nZeinukigaku As Double nZeinukigaku = nUriage / (100 + nSZEIRITSU) * 100 If nUriage > SHIKIICHI Then nZeigaku = (nZeinukigaku - SHIKIICHI) * 0.2042 + 102100 Else nZeigaku = nZeinukigaku * 0.1021 End If GENSEN_ZEINUKI = Fix(nZeigaku) End Function
1番目の引数は報酬額、2番目の引数には消費税率を与えます。消費税率はオプションとしてデフォルト値が10%になるようにしてあるので、記述を省略して呼び出すと10%で計算されます。8%で計算させたい場合は、この第2引数に8を指定して呼び出せば良し。
中身は単純なもので、引数として渡された報酬額と消費税率から消費税抜きの金額を計算し、100万以下か超えているかで、それぞれに適した計算を行った後、その結果から小数点以下を切り捨てて返却するだけです。
消費税込みの額を対象に源泉徴収税額を計算するコードはこんな感じ
もうひとつは、消費税込みの額を対象に源泉徴収税額を計算するパターン。こっちはもっと簡単です。関数名はGENSEN_ZEIKOMIでいいかな。
消費税込みの額を対象に計算を行うということは、前述の税抜き関数(GENSEN_ZEINUKI)で「消費税抜きの金額を計算したら消費税込みの金額と等しかった」となるように引数を渡せばいいわけです。他にはなにもいじる必要がありません。
' 消費税込み会計で源泉徴収税額を算出する Function GENSEN_ZEIKOMI(nUriage As Long) As Long GENSEN_ZEIKOMI = GENSEN_ZEINUKI(nUriage, 0) End Function
というわけで、こちらの関数は消費税率を0%にして税抜き関数を呼び出すだけ。それで望む結果を得ることができます。
作成した関数の使い方
こうして作った関数は、通常のワークシートから、セルの中に「=関数名」と記述することで好きに呼び出して使うことができます。
たとえば消費税抜きの金額を対象に源泉徴収税額を求める場合は……
たとえば消費税込みの金額を対象に源泉徴収税額を求める場合は……
なんだか、たいした手間でもないくせに、いざ作ってみたら意外と便利で笑っちゃいました。もっと早く腰を上げれば良かった。
これなら、売上発生と同時に源泉徴収税額を仕訳に入れる帳簿処理のやり方に切り替えても、特に困ることなく済みそうです。