法人税等の中間申告と納付

9月が終わり、10月になりました。3月決算法人については、半年経過したことになります。
3月決算法人は、11月30日までに、中間(予定)申告、納付をする必要が出てきます。
法人は、原則として事業年度開始の日以降6ヶ月を経過した日から2ヶ月以内に中間申告書を提出し、納付なければなりません。
基本的には、前年度の法人税等の半分を前払いするということになります。事業年度の真ん中で一度支払っておけば、期末にまとめて支払うより資金繰りのめどがつきやすい場合も多いですし、一方、国や地方自治体にとっても徴収漏れを防いで安定的に税収の確保ができるというわけです。

納付する金額などは、税務署や都道府県、市町村から前年の実績に基づいて計算されたものが、10月中旬から11月上旬に送られてきますので、計算する必要というのは限られていますが、もし、計算しようと思って、単純に計算式を組むと100円位ずれる事があります。
ややこしいことに、法人税・事業税と県民税・市町村民税では、端数処理の仕方が異なります。

012tyukan

法人税と事業税

①前事業年度の税額/前事業年度の月数(12)・・・端数処理円未満切り捨て
②①×6・・・端数処理百円未満切り捨て

住民税

前事業年度の税額×6/前事業年度の月数(12)・・・端数処理百円未満切り捨て

となります。

Excelで端数処理に役に立つ関数はROUND関数です。
ROUND関数には、
・ROUND(四捨五入)
・ROUNDDOWN(端数切捨て)
・ROUNDUP(端数切り上げ)
があります。
今回の中間申告の計算では、端数処理は切り捨てなので、ROUNDDOWN関数を使って計算しています。

中間納付法人税額=ROUNDDOWN(ROUNDDOWN(1,936,800/12,0)*6,-2)

法人税の計算では、端数処理が2回行われているので、ROUNDDOWN関数の中に更にROUNDDOWN関数で計算しています。

・ROUNDDOWN(1,936,800/12,0)

この部分が、①です。後ろの0は端数処理をする桁数を表しています。0とすることで、円未満が切り捨てになります。

・ROUNDDOWN(①*6,-2)

この数式部分が、②です。
今度は、端数処理する桁数が-2です。-2とすることで、100円未満が切り捨てになります。
1,000円未満切り捨てならば、-3と入力します。
小数点の端数処理をするときは、整数を入力します。

一度、計算式を組んでしまえば、確定申告が終わった時に、中間の納税予測をすることが出来ますので、資金繰り表を作成するときなどの計算でも使う事があるかも知れません。

中間申告と納付は、忘れずに。

Excel Select Case構文(給与所得控除)

給与所得控除の計算をSelect Case構文を使ったマクロVBAでやってみましょう。
Select Case構文
Select Case 論理式
Case 条件A
  真の場合
Case 条件B
  真の場合
Case Else
  偽の場合
End Select
一つの論理式に対して、その値に応じた処理を実行することができます。
018kyuuyo
019kyuuyo

マクロVBAの記述、赤枠Select Caseの部分。
Select Case varRevenue・・・給与の収入金額(varRevenueは変数)

Case 1 To 1625000・・・1円~1,625,000円のとき(給与所得控除の最低金額は、65万円)

Case 1625001 To 1800000・・・1,625,000円超え1,800,000円以下のとき



Case 10000001 To 12000000

Case Is > 12000000・・・12,000,000円を超えるとき

Case Else・・・上記の条件に該当しないとき

End Select・・・分岐終了

給与所得控除の計算などのように、数値の大小により計算式が変わるような場合、条件によって処理が3つ以上に分かれるときには、IF Then構文を使うよりもすっきりします。数値だけではなく、文字列、複数条件など色々できます。Select Case構文とIF Then構文と書き方が違うだけです。論理式に基づいて条件分岐することに違いはありません。
Select Case構文でCaseAとCaseBなどの条件に複数合致する場合には、一番上に記述してあるCaseの処理しか実行しないです。例えば、CaseAとBの両方に該当してもAの方が先に記述されていればAの処理だけ実行しBの処理は実行されません。

給与所得控除額を自分で計算するケースは、ほぼないと思いますが、マクロVBAの練習に作ってみるのも勉強になります。

Excel Excel関数とマクロVBA(消費税中間納付)

前回の消費税の中間納付の計算の一部をマクロVBAでやってみましょう。
003syouhizei
もちろん、ExcelのIF関数を使って判定、計算も出来ます。今回のケースでも、Excelの関数を使った方がやりやすいでしょう。しかし、条件分岐が増えてくるほど、ExcelのIF関数では難しくなってきます。赤枠の税額部分についてマクロVBAで計算します。
004syouhizei

以前紹介した、IF Then構文を使って、毎月納付なのか、年3回納付なのか、年1回納付なのか、それとも中間納付なしなのか順々に判定していきます。中間納付なし→年1回→年3回→毎月納付という順番の判定でIF Then構文を作ってみるのも面白いと思います。
今回、紹介したいのは、Excel関数をマクロVBAで使いたい場合です。
Excel関数と同じでVBAにも関数というものがあります。しかし、Excel関数=マクロVBA関数ではありません。同じ関数の名称でも若干処理が違ったり、Excel関数にあっても、マクロVBA関数にはない場合もあります。例えば、赤枠の部分のRoundDown。これは、Excel関数であり、計算した結果に端数があるときは、切り捨てをしてくれます。この関数は、マクロVBA関数には存在しません。マクロVBAでExcel関数を使いたいときには、Application.RoundDownと記述をすると使えるようになります。

Excel 変数 For Next構文

前回、前々回と登場したマクロVBAのコード内に登場していた「i」や「lngRw」という謎の文字があったかと思います。これは変数と呼ばれるものです。

変数

015macro8
はじめの黄色い枠
Dim lngRw As Long・・・変数lngRwを宣言
Dim lngCl As Long・・・変数lngClを宣言
Dim i As Long・・・変数iを宣言

Dim=変数の宣言
As Long=整数型、数値、値が代入されることを意味します。
DimとAsLongの間は、自分で任意の文字列を決めることが出来ます。

次の黄色い枠
lngRw = Range(“A100000”).End(xlUp).Row =lngRwという変数にデータが入っている最後の行番号の値を入れる。
lngCl = Range(“XFD1”).End(xlToLeft).Column =lngClという変数にデータが入っている最終の列番号の値を入れる。
毎回、決まった行、列までにデータが入力されていれば良いのですが、大概は入力してある行や列は毎回異なります。なので、どこまでデータが入力しているかを把握するためにデータが入っている最終の行番号の値と最終の列番号の値を変数に入れています。
例えば、Range(Cells(1, 1), Cells(lngRw, lngCl)).Selectとコードを記述した場合、データの入っている範囲を指定することが出来ます。
このように常に固定された値ではなく、値などが変動する場合には、変数を使います。

For Next構文

For Next構文
For 変数 = 初期値 To 終了値 Step 値
 処理
Next

ForとNextの間に書かれた処理を繰り返します。繰り返す回数は、初期値と終了値で決定します。

For i = lngRw To 2 Step -1 =データが入っている最終の行から2行目まで処理を繰り返します。
変数iには、処理が繰り返される度に最終行の値が-1づつ減っていきます。最終的にiの値が2になると繰り返しは終了します。
Next =Forに戻る、iの値が2の場合は、Forに戻らずに繰り返し処理が終了する。

For Next構文の繰り返しとIF Then構文の条件分岐がわかると作業の効率化に役立つマクロVBAを組むことが出来るようになってきます。手作業ならどのような手順になるか書き出してみたり、マクロの記録を使ったりすると作業の効率化ができる部分が見えてくるかもしれません。

Excel 条件付き書式 IF Then構文

ExcelのIF関数で、セルの書式を設定することが出来ません。IF関数のように書式についても条件分岐をしたいときには、条件付き書式を設定します。条件付き書式の使い方とマクロVBAで条件付き書式と同じような処理ができる方法です。

条件付き書式

条件付き書式の設定は、ルール(条件)を設定したいセルを選択し、条件付き書式タブからルールを作成します。
015macro7

論理式 =もし、セルの値が1,000,000円以上の場合
真の場合=1,000,000円以上のセルは、薄いピンク色の背景色を
偽の場合=1,000,000円未満のセルは、背景色の指定はなし

この条件付き書式を適用して、貸借対照表や損益計算書の値に大きな変動があった場合などには、すぐに気付けるようにすることやどこを注視しなければいけないかの目安が瞬時にわかるようになります。

マクロVBA IF Then構文

015macro5
赤枠で囲まれた部分です。ほかにも色々、気になるところがあると思いますが、無視してください。iは数字の2と考えてください。

If Cells(i, 3) >= 1000000 Then 論理式=もし、セルの値(C2)が1,000,000円以上の場合

Cells(i, 5).Interior.Color = 13551615 真の場合=セル(E2)は、薄いピンク色の背景色にする
.Interior.Colorは、セルの背景色を指定するプロパティで、13551615はRGB値で薄いピンク色を表しています。
Else
Cells(i, 5).Interior.Color = RGB(255, 255, 255) 偽の場合=セル(E2)は、白色の背景色にする
RGB(255, 255, 255)は、背景色の指定をRGB関数で表しています。

End If =分岐終了

背景色の書式設定などもIF Then構文を使って処理することが出来ます。このほかにもFormatConditionsプロパティを使う方法など色々あります。今回のケースでは、FormatConditionsプロパティの方が良かったなぁ。気になる方は、Google先生に聞いてみてください。

Excel IF関数 IF Then構文

Excel関数とマクロVBAでの記述として、それぞれにIF、条件分岐があります。IF関数の使い方とVBAでのIF Then構文の使い方とを比較してみました。

IF関数

ExcelのIF関数は、よく使われる代表的な関数です。

=IF(論理式,真の場合,偽の場合)

貸借対照表です。
016macro1

4月~6月(合計)の列に入力されている数値ですが、すべてプラス表示されています。これを「負債」や「純資産」の勘定の場合には、-表示させたいときなどにこのIF関数を使用すると便利です。

=IF(B2=”[資産]”,C2,C2*-1)
論理式 =もし、セルB2の値(区分)が[資産]の場合
真の場合=B2の値が[資産]のときは、C2の値を+表示の値を
偽の場合=B2の値が[資産]以外のときは、C2の値を-表示の値を

では、マクロVBAで記述する場合には、どうなるでしょうか。

マクロVBA IF Then構文

016macro2

赤枠で囲まれた部分です。ほかにも色々、気になるところがあると思いますが、無視してください。iは数字の2と考えてください。

マクロVBAでIFを使った構文は、
IF 論理式 Then
  真の場合
Else
  偽の場合
End if
になります。IF関数と同じ処理をIF Then構文を使って処理するとこのような方法があります。

If Cells(i, 2) = “[資産]” Then 論理式=もし、セルB2の値(区分)が[資産]の場合
Cellsは、セルを行と列の数字で指定するプロパティです。iは2行目、列は2列目(B列)を表しています。

Cells(i, 5) = Cells(i, 3) 真の場合=B2の値が[資産]のときは、C2の値を+表示の値をE2へ入力

Else
Cells(i, 5) = Cells(i, 3) * -1 偽の場合=B2の値が[資産]以外のときは、C2の値を-表示の値をE2へ入力

End If =分岐終了。

IF関数がわかればIF Then構文もわかると思います。ただ、IF Then構文は、セルの指定などを工夫しなければなりません。For Next構文などと組み合わせる必要が出てきます。For Next構文がわかるとマクロVBAがだんだん面白くなってきます。

Excelマクロの自動記録をやってみよう

毎月、同じ作業をしていて面倒だな、同じ手順の作業を何度も繰り返すことをExcelでやっていることがあったら、もしかしたら劇的に作業が楽になるかもしれません。それがExcelのマクロ(VBA)です。難しいと思うかもしれませんが、Excelには、自分がやった作業を「マクロの記録」として残してくれる機能があります。
015macro3

マクロを使ったことがない場合には、マクロの記録という機能が表示されていないので、リボンのユーザー設定で開発タブを追加するとタブ内に「マクロの記録」が表示されます。「マクロの記録」を実行して、Excelで行の削除や列の削除などをすると、その自分が行った作業をコードで記述してくれます。

015macro1

このExcelの表は、弥生の残高試算表をExcelにエクスポート(書き出し)した状態です。この表だと、不要な部分が多くて見づらいです。不要な行や列を削除して、体裁を整えたいですね。こんな感じに。
015macro2

この弥生からエクスポートしたExcel表から体裁を整えた表までの作業を「マクロの記録」を実行して作業をすると、自分がやった作業がこのようなコードで記述されます。
015macro4
この記録されたマクロを実行すると自分がさっきやった作業と同じことを自動で処理してくれます。

記述されたコードを少し見てみると、
Sub Macro1()
記述
End Sub
Subで始まりSubで終わります。その間に、実行する作業のコードが書かれています。Macro1()は、マクロの名前です。

実行される作業のコードも少し見ていきましょう。
Rows(“1:7”).Select・・・Excelの1行目~7行目を選択するという記述。
Selection.Delete Shift:=xlUp・・・選択している部分(1行目~7行目)を削除して、上方向にシフト(8行目以降のデータが上にいく)するという記述。
Excelの1行目~7行目に入っていた帳票名:残高試算表(年間推移)とかいらない行を削除する作業が実行されます。

Columns(“E:G”).Select・・・ExcelのE列~G列を選択するという記述。
Selection.Delete Shift:=xlToLeft・・・選択している部分を削除して、左方向にシフトするという記述。
ExcelのE列~G列は、まだ入力をしていない月なのでいらない列を削除する作業が実行されます。

こんな感じで、自分がやったことをコードで書いてくれるので、何回か同じようなことを「マクロの記録」をしてみると、コードを見た時に自分がどんなことをしたのか思い出せば、コードの文字が何を意味するかある程度わかるようになります。色々、「マクロの記録」をしながら作業をしてみると面白いです。

Excel関数CONCATENATE

Excelの関数には、数値の合計を計算するSUM関数など様々な関数があります。
その中でも、基本の関数でよくお世話になるのがCONCATENATE関数です。
CONCATENATE関数は、複数の文字列を結合して1つの文字列にまとめる関数です。

こちらは、現金出納帳の一部です。
concatenate

Excelに入力した現金出納帳のデータを会計ソフトに読み込みたいときに、日付の読み込みは、年月日を1つの文字列として読み込みをするソフトが大半です。しかし、Excelの入力の際にいちいち年や月を毎回入力するのは、面倒です。なので、年と月、日は別のセルにした方が入力の手間が省けます。でも、会計ソフトの読み込みは…。そんな時に役立つのがCONCATENATE関数です。I列に記載されている数式の結果がH列に入っています。
=CONCATENATE($C$2,”/”,A6,”/”,B6)
C2のセル、年数を絶対参照($$で囲う)し、絶対参照をすることによって数式をコピーしてもC2のセルを参照します。
次に”/”は、年と月の間に/という文字を加えています。””で囲うことによって間にある文字を加えることが出来ます。
A6のセル、月を相対参照($$で囲わない)にしています。これだとコピーした時にセルの参照先が変わることになります。今回のExcelのように下に入力していく表のでは、下に数式をコピーする場合は、問題ありませんが、右側にコピーするようなときには、変な参照になってしまいます。これは、B6のセルも一緒です。

日付と同じように取引先と摘要についても、1つの文字列にするには、CONCATENATE関数を使います。会計ソフトによっては、取引先と摘要とそれぞれ入力する場合には、CONCATENATEする必要はありません。
また、取引先名をリスト入力できるようにして、なおかつ、取引先で摘要が決まっているような場合は、数式を組んでおくことでより入力の手間が省けるようになります。このようにExcelは色々と手を加えやすい点が良いですね。

ところで、帳簿(仕訳)に記載すべき項目には何があるのでしょうか。
参考になるのが、消費税法30条です。
・相手方の氏名又は名称
・取引を行った年月日
・資産又は役務(取引)の内容
・金額
これらが最低限、帳簿に記載しておくべき事項です。免税事業者については、もう少し省略できる部分はありますが、免税事業者であっても最低限、この4つの項目は帳簿に記載しておきましょう。
特に注意をしたいのが相手方の氏名と取引の内容です。どちらかが帳簿に記載れていないことがあります。税務調査でも、よほど酷い帳簿ではない限り、指導ということで済みますが、課税事業者の場合には、帳簿の保存要件として明記されてますので、漏れなく記載をしましょう。