同業の方でないと知らないと思われるマニアックな内容ですが、消費税額の計算をする際に「簡易課税制度」を適用する場合があります。
「簡易課税制度」を適用 した場合における消費税額の計算ができるExcel(エクセル)シートを作成してみました。
Excel VBA で作った関数をユーザー定義関数として使っています。
今日は、その作り方についてお話しします。
※なお、今日は「簡易課税制度」の内容自体を詳しく説明するつもりはありません。
また、余談ではありますが 原則課税・簡易課税どちらが得か判定するExcelツールの使い方をYoutubeでアップしておりますので参考にして下さい▼
チャンネル登録は、こちらからお願い致します。
1、「簡易課税制度」を適用した場合において消費税額を計算するシート
以下のシートの色付き(クリーム色)のセルに入力すれば、右下のセル「I16」に「1年間の消費税額」が表示される仕組みです。
※なお、このシートでは貸倒損失がある場合や複数の消費税率が混在している場合の計算はできません。
入力が必要な項目
入力が必要な項目は以下のようにしております。
●セル「D2」: 消費税率
消費税率として、8 又は5 を入力します。
●セル「D6 〜 D11」: 収入金額
次の第1種から第6種事業の収入金額を入力します。
※税込金額です。
第1種 卸売業
第2種 小売業
第3種 製造業
第4種 その他
第5種 サービス業
第6種 不動産業
●セル「E6 〜 E11」: 不課税取引
第1種から第6種事業の収入金額のうち「不課税取引」に該当する金額を入力します。
●セル「E6 〜 E11」: 非課税取引
第1種から第6種事業の収入金額のうち「非課税取引」に該当する金額を入力します。
セルでの計算
シート内で数式を埋め込んでいる箇所を説明します。
●セル「G6 〜 G11」: 税込課税売上高
第1種から第6種事業それぞれ
収入金額から不課税取引、非課税取引を引いて、税込課税売上高を計算しています。
●セル「H6 〜 H11」: 消費税
第1種から第6種事業それぞれ税込課税売上高に含まれる消費税額を計算しています。
以下の計算の小数点以下を四捨五入↓
税込課税売上高 × 消費税率 / (1 + 消費税率)
●セル「I6 〜 I11」: 税抜課税売上高
第1種から第6種事業それぞれ税抜課税売上高を計算しています。
税込課税売上高 − 消費税
●セル「I16」: 1年間の消費税額
VBA で作ったユーザー定義関数「Syouhizei」関数を用いて1年間の消費税額 を計算しています。
引数は6つ、第1種から第6種事業それぞれの「税抜課税売上高」です。
Syouhizei(引数1,引数2,引数3,引数4,引数5,引数6)
今日はこのユーザー定義関数についての VBA プログラミングコードを中心に説明します。
なお、消費税率を入力するセル「D2」に 8 又は 5 以外の数値を入力すると、アラートのメッセージボックスが出るようになっています。
「消費税率は 8 又は 5 を入力して下さい。」
2、プログラミングコード
ユーザー定義関数を作るための VBA コードを示します。
Function プロシージャを使っています。
以下↓のようにFunction と End Functionの間にコードを書かなければなりません。
————–
Function 関数名()
コード
End Function
————–
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
Function Syouhizei(rng1, rng2, rng3, rng4, rng5, rng6 As Variant) Dim Zeiritsu '消費税率 8 or 5' Dim Zeiritsu_K '国税分消費税率 6.3 or 4' Dim Zeiritsu_C '地方税分消費税率 1.7 or 1' Dim Kazeihyoujun '課税標準額' Dim Uriage_G '課税売上高 合計' Dim Syouhi_G '消費税額 合計' Dim Syouhi_1 '第1種(卸売業) 事業別消費税額' Dim Syouhi_2 '第2種(小売業) 事業別消費税額' Dim Syouhi_3 '第3種(製造業) 事業別消費税額' Dim Syouhi_4 '第4種(その他) 事業別消費税額' Dim Syouhi_5 '第5種(サービス業) 事業別消費税額' Dim Syouhi_6 '第6種(不動産業) 事業別消費税額' Dim Minashi_Ritsu0 'みなし仕入率 原則' Dim Minashi_Ritsu1 'みなし仕入率 1種類で75%以上' Dim Minashi_Ritsu2 'みなし仕入率 2種類で75%以上' Dim Minashi_Shiire0 '控除対象仕入税額 原則' Dim Minashi_Shiire1 '控除対象仕入税額 1種類で75%以上' Dim Minashi_Shiire2A '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2B '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2C '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2D '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2E '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2F '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2G '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2H '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2I '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2J '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2K '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2L '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2M '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2N '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire2O '控除対象仕入税額 2種類で75%以上' Dim Minashi_Shiire '控除対象仕入税額' Dim Syouhi_H '課税標準額から計算した消費税額' Dim Syouhi_K '消費税額のうち国税分' Dim Syouhi_C '消費税額のうち地方税分' '消費税率の読込み' Zeiritsu = Cells(2, 4) Zeiritsu = Zeiritsu / 100 '課税売上高 合計' Uriage_G = Cells(13, 9) '消費税率による場合分け' Select Case Zeiritsu Case 0.08 Zeiritsu_K = 0.063 Zeiritsu_C = 0.017 Case 0.05 Zeiritsu_K = 0.04 Zeiritsu_C = 0.01 Case Else MsgBox "消費税率は 8 又は 5 を入力して下さい。" End Select Kazeihyoujun = Application.RoundDown(Uriage_G, -3) '課税標準額' Syouhi_H = Kazeihyoujun * Zeiritsu_K '課税標準額から計算した消費税額' '事業別消費税額' Syouhi_1 = Application.RoundDown(rng1 * Zeiritsu_K, 0) Syouhi_2 = Application.RoundDown(rng2 * Zeiritsu_K, 0) Syouhi_3 = Application.RoundDown(rng3 * Zeiritsu_K, 0) Syouhi_4 = Application.RoundDown(rng4 * Zeiritsu_K, 0) Syouhi_5 = Application.RoundDown(rng5 * Zeiritsu_K, 0) Syouhi_6 = Application.RoundDown(rng6 * Zeiritsu_K, 0) Syouhi_G = Syouhi_1 + Syouhi_2 + Syouhi_3 + Syouhi_4 + Syouhi_5 + Syouhi_6 '控除対象仕入税額 原則計算' If Uriage_G = 0 Then Minashi_Ritsu0 = 0 Else Minashi_Ritsu0 = (Syouhi_1 * 0.9 + Syouhi_2 * 0.8 + Syouhi_3 * 0.7 + Syouhi_4 * 0.6 + Syouhi_5 * 0.5 + Syouhi_6 * 0.4) / Syouhi_G End If Minashi_Shiire0 = Application.RoundDown(Minashi_Ritsu0 * Syouhi_H, 0) '控除対象仕入税額 1種類で75%以上' If rng1 / Uriage_G >= 0.75 Then '1種' Minashi_Ritsu1 = 0.9 ElseIf rng2 / Uriage_G >= 0.75 Then '2種' Minashi_Ritsu1 = 0.8 ElseIf rng3 / Uriage_G >= 0.75 Then '3種' Minashi_Ritsu1 = 0.7 ElseIf rng4 / Uriage_G >= 0.75 Then '4種' Minashi_Ritsu1 = 0.6 ElseIf rng5 / Uriage_G >= 0.75 Then '5種' Minashi_Ritsu1 = 0.5 ElseIf rng6 / Uriage_G >= 0.75 Then '6種' Minashi_Ritsu1 = 0.4 Else End If Minashi_Shiire1 = Application.RoundDown(Minashi_Ritsu1 * Syouhi_H, 0) '控除対象仕入税額 2種類で75%以上' If (rng1 + rng2) / Uriage_G >= 0.75 Then '1種 + 2種' Minashi_Ritsu2A = (Syouhi_1 * 0.9 + (Syouhi_G - Syouhi_1) * 0.8) / Syouhi_G Minashi_Shiire2A = Application.RoundDown(Minashi_Ritsu2A * Syouhi_H, 0) Else End If If (rng1 + rng3) / Uriage_G >= 0.75 Then '1種 + 3種' Minashi_Ritsu2B = (Syouhi_1 * 0.9 + (Syouhi_G - Syouhi_1) * 0.7) / Syouhi_G Minashi_Shiire2B = Application.RoundDown(Minashi_Ritsu2B * Syouhi_H, 0) Else End If If (rng1 + rng4) / Uriage_G >= 0.75 Then '1種 + 4種' Minashi_Ritsu2C = (Syouhi_1 * 0.9 + (Syouhi_G - Syouhi_1) * 0.6) / Syouhi_G Minashi_Shiire2C = Application.RoundDown(Minashi_Ritsu2C * Syouhi_H, 0) Else End If If (rng1 + rng5) / Uriage_G >= 0.75 Then '1種 + 5種' Minashi_Ritsu2D = (Syouhi_1 * 0.9 + (Syouhi_G - Syouhi_1) * 0.5) / Syouhi_G Minashi_Shiire2D = Application.RoundDown(Minashi_Ritsu2D * Syouhi_H, 0) Else End If If (rng1 + rng6) / Uriage_G >= 0.75 Then '1種 + 6種' Minashi_Ritsu2E = (Syouhi_1 * 0.9 + (Syouhi_G - Syouhi_1) * 0.4) / Syouhi_G Minashi_Shiire2E = Application.RoundDown(Minashi_Ritsu2E * Syouhi_H, 0) Else End If If (rng2 + rng3) / Uriage_G >= 0.75 Then '2種 + 3種' Minashi_Ritsu2F = (Syouhi_2 * 0.8 + (Syouhi_G - Syouhi_2) * 0.7) / Syouhi_G Minashi_Shiire2F = Application.RoundDown(Minashi_Ritsu2F * Syouhi_H, 0) Else End If If (rng2 + rng4) / Uriage_G >= 0.75 Then '2種 + 4種' Minashi_Ritsu2G = (Syouhi_2 * 0.8 + (Syouhi_G - Syouhi_2) * 0.6) / Syouhi_G Minashi_Shiire2G = Application.RoundDown(Minashi_Ritsu2G * Syouhi_H, 0) Else End If If (rng2 + rng5) / Uriage_G >= 0.75 Then '2種 + 5種' Minashi_Ritsu2H = (Syouhi_2 * 0.8 + (Syouhi_G - Syouhi_2) * 0.5) / Syouhi_G Minashi_Shiire2H = Application.RoundDown(Minashi_Ritsu2H * Syouhi_H, 0) Else End If If (rng2 + rng6) / Uriage_G >= 0.75 Then '2種 + 6種' Minashi_Ritsu2I = (Syouhi_2 * 0.8 + (Syouhi_G - Syouhi_2) * 0.4) / Syouhi_G Minashi_Shiire2I = Application.RoundDown(Minashi_Ritsu2I * Syouhi_H, 0) Else End If If (rng3 + rng4) / Uriage_G >= 0.75 Then '3種 + 4種' Minashi_Ritsu2J = (Syouhi_3 * 0.7 + (Syouhi_G - Syouhi_3) * 0.6) / Syouhi_G Minashi_Shiire2J = Application.RoundDown(Minashi_Ritsu2J * Syouhi_H, 0) Else End If If (rng3 + rng5) / Uriage_G >= 0.75 Then '3種 + 5種' Minashi_Ritsu2K = (Syouhi_3 * 0.7 + (Syouhi_G - Syouhi_3) * 0.5) / Syouhi_G Minashi_Shiire2K = Application.RoundDown(Minashi_Ritsu2K * Syouhi_H, 0) Else End If If (rng3 + rng6) / Uriage_G >= 0.75 Then '3種 + 6種' Minashi_Ritsu2L = (Syouhi_3 * 0.7 + (Syouhi_G - Syouhi_3) * 0.4) / Syouhi_G Minashi_Shiire2L = Application.RoundDown(Minashi_Ritsu2L * Syouhi_H, 0) Else End If If (rng4 + rng5) / Uriage_G >= 0.75 Then '4種 + 5種' Minashi_Ritsu2M = (Syouhi_4 * 0.6 + (Syouhi_G - Syouhi_4) * 0.5) / Syouhi_G Minashi_Shiire2M = Application.RoundDown(Minashi_Ritsu2M * Syouhi_H, 0) Else End If If (rng4 + rng6) / Uriage_G >= 0.75 Then '4種 + 6種' Minashi_Ritsu2N = (Syouhi_4 * 0.6 + (Syouhi_G - Syouhi_4) * 0.4) / Syouhi_G Minashi_Shiire2N = Application.RoundDown(Minashi_Ritsu2N * Syouhi_H, 0) Else End If If (rng5 + rng6) / Uriage_G >= 0.75 Then '5種 + 6種' Minashi_Ritsu2O = (Syouhi_5 * 0.5 + (Syouhi_G - Syouhi_5) * 0.4) / Syouhi_G Minashi_Shiire2O = Application.RoundDown(Minashi_Ritsu2O * Syouhi_H, 0) Else End If '控除対象仕入税額' Minashi_Shiire = Application.Max(Minashi_Shiire0, Minashi_Shiire1, _ Minashi_Shiire2A, Minashi_Shiire2B, Minashi_Shiire2C, _ Minashi_Shiire2D, Minashi_Shiire2E, Minashi_Shiire2F, _ Minashi_Shiire2G, Minashi_Shiire2H, Minashi_Shiire2I, _ Minashi_Shiire2J, Minashi_Shiire2K, Minashi_Shiire2L, _ Minashi_Shiire2M, Minashi_Shiire2N, Minashi_Shiire2O) '消費税額のうち国税分' Syouhi_K = Application.RoundDown(Syouhi_H - Minashi_Shiire, -2) '消費税額のうち地方税分' Syouhi_C = Application.RoundDown((Syouhi_H - Minashi_Shiire) * Zeiritsu_C / Zeiritsu_K, -2) '消費税額' Syouhizei = Syouhi_K + Syouhi_C End Function |
3、コード説明
プログラミングコードについて説明します。
Function プロシージャ
Syouhizei という名前の引数6個の関数を定義しています。
Function Syouhizei(rng1, rng2, rng3, rng4, rng5, rng6 As Variant)
引数 rng1 〜 rng6 にはそれぞれ Excel シート上の第1種から第6種事業の「税抜課税売上高」の値が入ります。Variant型(すべての型を含む)で定義しています。
シート上で見れば、このように↓セルを6つ指定していますよね。
消費税率と税抜課税売上高の合計の読み込み
Excel シートのセル「D2」から「消費税率」を読み込んで 100 で割っています。
(上記47、48行目)
1 2 |
Zeiritsu = Cells(2, 4) Zeiritsu = Zeiritsu / 100 |
税抜課税売上高の合計をセル「I9」から読み込んでいます。
(上記51行目)
1 |
Uriage_G = Cells(13, 9) |
国税分の税率と地方税分の税率の場合分け
消費税率が8%の場合と 5%の場合で、国税分の税率(Zeiritsu_K)と地方税分の税率(Zeiritsu_C)を分けています。
また、消費税率が 8 又は 5 以外の場合は「消費税率は 8 又は 5 を入力して下さい。」というメッセージを出して注意喚起するようにしています。
(上記54~63行目)
1 2 3 4 5 6 7 8 9 10 11 |
'消費税率による場合分け' Select Case Zeiritsu Case 0.08 Zeiritsu_K = 0.063 Zeiritsu_C = 0.017 Case 0.05 Zeiritsu_K = 0.04 Zeiritsu_C = 0.01 Case Else MsgBox "消費税率は 8 又は 5 を入力して下さい。" End Select |
消費税額の計算
まず、課税標準額の計算のため先に読み込んだ税抜課税売上高の合計の1,000円未満を切り捨てます。
続いて、課税標準額に対する消費税額の計算のため課税標準額に国税分の消費税率を掛けます。
(上記66、67行目)
1 2 |
Kazeihyoujun = Application.RoundDown(Uriage_G, -3) '課税標準額' Syouhi_H = Kazeihyoujun * Zeiritsu_K '課税標準額から計算した消費税額' |
付表5の中の以下の赤枠で囲った部分を計算していることになりますね。
次に事業別の消費税額を計算します。事業別の税抜課税売上高に国税分の税率を掛けます。
今回のユーザー定義関数の引数となっている事業別の税抜課税売上高に国税分の税率を掛けて小数点以下を切り捨てています。
(上記71~77行目)
1 2 3 4 5 6 7 8 |
'事業別消費税額' Syouhi_1 = Application.RoundDown(rng1 * Zeiritsu_K, 0) Syouhi_2 = Application.RoundDown(rng2 * Zeiritsu_K, 0) Syouhi_3 = Application.RoundDown(rng3 * Zeiritsu_K, 0) Syouhi_4 = Application.RoundDown(rng4 * Zeiritsu_K, 0) Syouhi_5 = Application.RoundDown(rng5 * Zeiritsu_K, 0) Syouhi_6 = Application.RoundDown(rng6 * Zeiritsu_K, 0) Syouhi_G = Syouhi_1 + Syouhi_2 + Syouhi_3 + Syouhi_4 + Syouhi_5 + Syouhi_6 |
付表5で言えば、以下の部分の部分になりますね。
控除対象仕入税額の計算 原則計算
控除対象仕入税額の計算を行います。
計算方法は、原則、事業1種類で75%以上の場合、事業2種類で75%以上の場合各々で計算した控除対象仕入額のうち最大のものを選びます。
まず、最初に原則計算を行っています。
(上記81~87行目)
1 2 3 4 5 6 7 8 |
'控除対象仕入税額 原則計算' If Uriage_G = 0 Then Minashi_Ritsu0 = 0 Else Minashi_Ritsu0 = (Syouhi_1 * 0.9 + Syouhi_2 * 0.8 + Syouhi_3 * 0.7 + Syouhi_4 * 0.6 + Syouhi_5 * 0.5 + Syouhi_6 * 0.4) / Syouhi_G End If Minashi_Shiire0 = Application.RoundDown(Minashi_Ritsu0 * Syouhi_H, 0) |
計算式の内容は以下の付表5の赤枠で囲った箇所と同じことを行っています。
控除対象仕入税額の計算 1種類で75%以上の場合の計算
次に、1種類で75%以上の場合の計算 を行っています。
(上記91~104行目)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
'控除対象仕入税額 1種類で75%以上' If rng1 / Uriage_G >= 0.75 Then '1種' Minashi_Ritsu1 = 0.9 ElseIf rng2 / Uriage_G >= 0.75 Then '2種' Minashi_Ritsu1 = 0.8 ElseIf rng3 / Uriage_G >= 0.75 Then '3種' Minashi_Ritsu1 = 0.7 ElseIf rng4 / Uriage_G >= 0.75 Then '4種' Minashi_Ritsu1 = 0.6 ElseIf rng5 / Uriage_G >= 0.75 Then '5種' Minashi_Ritsu1 = 0.5 ElseIf rng6 / Uriage_G >= 0.75 Then '6種' Minashi_Ritsu1 = 0.4 Else End If Minashi_Shiire1 = Application.RoundDown(Minashi_Ritsu1 * Syouhi_H, 0) |
計算式の内容は以下の付表5の赤枠で囲った箇所と同じことを行っています。
控除対象仕入税額の計算 2種類で75%以上の場合の計算
次に、2種類で75%以上の場合の計算 を行っています。
(上記111~199行目)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
'控除対象仕入税額 2種類で75%以上' If (rng1 + rng2) / Uriage_G >= 0.75 Then '1種 + 2種' Minashi_Ritsu2A = (Syouhi_1 * 0.9 + (Syouhi_G - Syouhi_1) * 0.8) / Syouhi_G Minashi_Shiire2A = Application.RoundDown(Minashi_Ritsu2A * Syouhi_H, 0) Else End If If (rng1 + rng3) / Uriage_G >= 0.75 Then '1種 + 3種' Minashi_Ritsu2B = (Syouhi_1 * 0.9 + (Syouhi_G - Syouhi_1) * 0.7) / Syouhi_G Minashi_Shiire2B = Application.RoundDown(Minashi_Ritsu2B * Syouhi_H, 0) Else End If If (rng1 + rng4) / Uriage_G >= 0.75 Then '1種 + 4種' Minashi_Ritsu2C = (Syouhi_1 * 0.9 + (Syouhi_G - Syouhi_1) * 0.6) / Syouhi_G Minashi_Shiire2C = Application.RoundDown(Minashi_Ritsu2C * Syouhi_H, 0) Else End If If (rng1 + rng5) / Uriage_G >= 0.75 Then '1種 + 5種' Minashi_Ritsu2D = (Syouhi_1 * 0.9 + (Syouhi_G - Syouhi_1) * 0.5) / Syouhi_G Minashi_Shiire2D = Application.RoundDown(Minashi_Ritsu2D * Syouhi_H, 0) Else End If If (rng1 + rng6) / Uriage_G >= 0.75 Then '1種 + 6種' Minashi_Ritsu2E = (Syouhi_1 * 0.9 + (Syouhi_G - Syouhi_1) * 0.4) / Syouhi_G Minashi_Shiire2E = Application.RoundDown(Minashi_Ritsu2E * Syouhi_H, 0) Else End If If (rng2 + rng3) / Uriage_G >= 0.75 Then '2種 + 3種' Minashi_Ritsu2F = (Syouhi_2 * 0.8 + (Syouhi_G - Syouhi_2) * 0.7) / Syouhi_G Minashi_Shiire2F = Application.RoundDown(Minashi_Ritsu2F * Syouhi_H, 0) Else End If If (rng2 + rng4) / Uriage_G >= 0.75 Then '2種 + 4種' Minashi_Ritsu2G = (Syouhi_2 * 0.8 + (Syouhi_G - Syouhi_2) * 0.6) / Syouhi_G Minashi_Shiire2G = Application.RoundDown(Minashi_Ritsu2G * Syouhi_H, 0) Else End If If (rng2 + rng5) / Uriage_G >= 0.75 Then '2種 + 5種' Minashi_Ritsu2H = (Syouhi_2 * 0.8 + (Syouhi_G - Syouhi_2) * 0.5) / Syouhi_G Minashi_Shiire2H = Application.RoundDown(Minashi_Ritsu2H * Syouhi_H, 0) Else End If If (rng2 + rng6) / Uriage_G >= 0.75 Then '2種 + 6種' Minashi_Ritsu2I = (Syouhi_2 * 0.8 + (Syouhi_G - Syouhi_2) * 0.4) / Syouhi_G Minashi_Shiire2I = Application.RoundDown(Minashi_Ritsu2I * Syouhi_H, 0) Else End If If (rng3 + rng4) / Uriage_G >= 0.75 Then '3種 + 4種' Minashi_Ritsu2J = (Syouhi_3 * 0.7 + (Syouhi_G - Syouhi_3) * 0.6) / Syouhi_G Minashi_Shiire2J = Application.RoundDown(Minashi_Ritsu2J * Syouhi_H, 0) Else End If If (rng3 + rng5) / Uriage_G >= 0.75 Then '3種 + 5種' Minashi_Ritsu2K = (Syouhi_3 * 0.7 + (Syouhi_G - Syouhi_3) * 0.5) / Syouhi_G Minashi_Shiire2K = Application.RoundDown(Minashi_Ritsu2K * Syouhi_H, 0) Else End If If (rng3 + rng6) / Uriage_G >= 0.75 Then '3種 + 6種' Minashi_Ritsu2L = (Syouhi_3 * 0.7 + (Syouhi_G - Syouhi_3) * 0.4) / Syouhi_G Minashi_Shiire2L = Application.RoundDown(Minashi_Ritsu2L * Syouhi_H, 0) Else End If If (rng4 + rng5) / Uriage_G >= 0.75 Then '4種 + 5種' Minashi_Ritsu2M = (Syouhi_4 * 0.6 + (Syouhi_G - Syouhi_4) * 0.5) / Syouhi_G Minashi_Shiire2M = Application.RoundDown(Minashi_Ritsu2M * Syouhi_H, 0) Else End If If (rng4 + rng6) / Uriage_G >= 0.75 Then '4種 + 6種' Minashi_Ritsu2N = (Syouhi_4 * 0.6 + (Syouhi_G - Syouhi_4) * 0.4) / Syouhi_G Minashi_Shiire2N = Application.RoundDown(Minashi_Ritsu2N * Syouhi_H, 0) Else End If If (rng5 + rng6) / Uriage_G >= 0.75 Then '5種 + 6種' Minashi_Ritsu2O = (Syouhi_5 * 0.5 + (Syouhi_G - Syouhi_5) * 0.4) / Syouhi_G Minashi_Shiire2O = Application.RoundDown(Minashi_Ritsu2O * Syouhi_H, 0) Else End If |
計算式の内容は以下の付表5の赤枠で囲った箇所と同じことを行っています。
控除対象仕入税額の計算 最大値の選択
これまでに計算した以下の中から最大となるものを選び出します。
・原則計算
・1種類で75%以上の場合の計算
・2種類で75%以上の場合の計算
ワークシート関数の1つである MAX関数を使っています。
1 2 3 4 5 6 7 |
'控除対象仕入税額' Minashi_Shiire = Application.Max(Minashi_Shiire0, Minashi_Shiire1, _ Minashi_Shiire2A, Minashi_Shiire2B, Minashi_Shiire2C, _ Minashi_Shiire2D, Minashi_Shiire2E, Minashi_Shiire2F, _ Minashi_Shiire2G, Minashi_Shiire2H, Minashi_Shiire2I, _ Minashi_Shiire2J, Minashi_Shiire2K, Minashi_Shiire2L, _ Minashi_Shiire2M, Minashi_Shiire2N, Minashi_Shiire2O) |
計算式の内容は以下の付表5の赤枠で囲った箇所と同じことを行っています。
消費税額の計算
消費税のうち国税分、地方税分を計算した後、1年間の消費税額(国税と地方税の合計)を計算しています。
1 2 3 4 5 6 7 8 9 10 |
'消費税額のうち国税分' Syouhi_K = Application.RoundDown(Syouhi_H - Minashi_Shiire, -2) '消費税額のうち地方税分' Syouhi_C = Application.RoundDown((Syouhi_H - Minashi_Shiire) * Zeiritsu_C / Zeiritsu_K, -2) '消費税額' Syouhizei = Syouhi_K + Syouhi_C |
4、まとめ
簡易課税制度を適用した場合の消費税額の計算を VBA で作ったユーザー定義関数を用いて行いました。
日頃は会計ソフトで計算してしまう内容のことですが、改めて自分で計算式を作ると消費税法自体の勉強にもなりますね。
ユーザー定義関数はワークシート上で他の関数と同じように使うことができます。
自作の便利な関数を作ることを考えて頂ければと思います。
余談ではありますが、原則課税・簡易課税どちらが得か判定するExcelツールの使い方をYoutubeでアップしておりますので参考にして下さい▼
チャンネル登録は、こちらからお願い致します。