‐ChatGPT‐
給与の仕訳は面倒くさい
給与の仕訳って、なんでこんなにめんどくさいんだろうって思いませんか?特に、大手企業だと給与計算システムと会計システムが連動していないところが多いのが難点。だから、経理担当者は従業員名を隠した給与データを渡されて、一人ずつ仕訳を切らなければならないことがあるんですよね。
もちろん、小さい会社だと社労士に給与計算を任せたり、生データだけを渡して後は経理が仕訳を切ったりする場合もあります。でも、それでも給与データが大体Excelの1行に対して従業員の基本給や社会保険、源泉税、会社負担分などがあるので、一個ずつ仕訳を切っていたら日がくれてしまうかもしれません。
そんなとき、給与自動仕訳ツールがあれば、従業員名ごとに仕訳を作成し、会計システムに一気にバッチで取り込めるように仕訳を指定した最終行に一つずつ追加することができます。このツールを作成するために、私はChatGPTに質問しながら作ってみました。
給与の仕訳は、確かに厄介なものですが、適切なツールを使えば、時間と手間を大幅に削減することができます。
給与計算システムと会計システムの問題点
給与計算システムと会計システムの連動に問題があることは、多くの企業でよく知られています。これは、従業員の給与が支払われるたびに、会計部門が手動で仕訳を作成しなければならないことを意味します。
この問題は、企業が増えるにつれて深刻化しています。大企業では、人事部門が給与計算を外部委託している場合があり、経理部門が使用しているシステムと異なる場合があります。小企業では、社労士に給与計算を任せている場合があり、生データだけを提供し、仕訳は経理部門が手動で作成することがあります。
給与計算システムと会計システムが連動していないため、経理部門は従業員名を隠した給与データを渡されるだけで、自分たちで仕訳を作成しなければならないという状況に陥ることがあります。また、上場企業の場合、管理会計を意識して部門別に給与の仕訳を入力することが求められる場合があります。これにより、従業員毎に仕訳を入力する必要が生じるため、経理部門はかなりの手間を費やすことになります。
給与データは通常、Excelの1行に従業員の基本給、社会保険、源泉税、会社負担分などが含まれます。このデータを手動で仕訳に変換するのは非常に困難であり、時間がかかるため、経理部門は常にストレスを感じています。
結局のところ、給与計算システムと会計システムの連動に問題があることは、企業の経理部門にとって大きな問題です。この問題に対処するには、給与自動仕訳ツールのようなソリューションを使用することが推奨されます。これにより、従業員の給与が支払われるたびに、手動で仕訳を作成する必要がなくなり、経理部門はより重要な業務に時間を割くことができます。
chatGPTによる給与自動仕訳ツールの開発
給与自動仕訳ツールは、給与計算データから自動的に仕訳帳に入力される給与仕訳を作成するためのツールです。ExcelのVBAを使用して、以下の仕様を実現しています。
給与テストデータの作成
給与データをExcelの表に入力します。1行に1人分の給与データが入力されており、従業員ID、氏名、基本給、通勤手当、その他手当、割増賃金、雇用保険(従業員負担)、雇用保険(会社負担)、健康保険(従業員負担)、健康保険(会社負担)、年金保険料(従業員負担)、年金保険料(会社負担)、所得税、住民税、総支給額が含まれます。
シート名は、給与データ
【ChatGPTへの質問事例】
従業員ID、氏名、基本給、通勤手当、その他手当、割増賃金、雇用保険(従業員負担)、雇用保険(会社負担)、健康保険(従業員負担)、健康保険(会社負担)、年金保険料(従業員負担)、年金保険料(会社負担)、所得税、住民税、総支給額 の項目で 表形式でテストデータを作ってみて
【回答】
表形式で作ってくれるので、給与データシートに以下のように貼り付けてください。
給与仕訳テンプレートシートを作成
給与仕訳テンプレートは、仕訳作成のためのフォーマットであり、従業員名称、 勘定科目、 消費税、 金額、 勘定科目、 消費税、 金額が含まれます。
シート名は、給与仕訳テンプレート
とりあえず、以下のように手動で作成してみてください。あくまでもテスト用です。仕訳の勘定科目などは、会社によって異なるのでご自身の会社の勘定科目で作成してみてください。
給与仕訳シートを作成
ここには、仕訳バッチを作成するために最終行に一個ずつ仕訳を追加していきます。後で、データをクリアできるようにクリアボタンを実装します。
シート名は、給与仕訳
ExcelVBAによる給与仕訳の自動作成
給与データから給与仕訳テンプレートに適切な箇所に数値を入力して、給与仕訳テンプレートを新しいシートにコピーしてシート名を従業員名称にします。給与仕訳シートには最終行に一つずつ給与仕訳を追加するようにします。
【ChatGPTへの質問事例】
①VBAで給与仕訳を自動にて一気に作るようにしましょう。給与データというシートに1行に一人分の給与データがあります。1行毎に仕訳を作りたいです。A列 従業員ID B列 氏名 C列 基本給 D列 通勤手当 E列 その他手当 F列 割増賃金 G列 雇用保険(従業員負担) H列 雇用保険(会社負担) I列 健康保険(従業員負担) J列 健康保険(会社負担) K列 年金保険料(従業員負担) L列 年金保険料(会社負担) M列 所得税 N列 住民税 O列 総支給額 となっています。これを給与仕訳テンプレートに入力していきたいと思います。給与仕訳テンプレートシートのセルA2に 給与データシートのB列 給与仕訳テンプレートシートのセルD2に給与データシートのC列 給与仕訳テンプレートシートのセルD4に給与データシートのD列 給与仕訳テンプレートシートのセルD5に給与データシートのE列 給与仕訳テンプレートシートのセルD3に給与データシートのF列 給与仕訳テンプレートシートのセルG6に給与データシートのG列 給与仕訳テンプレートシートのセルG8に給与データシートのH列 給与仕訳テンプレートシートのセルG5に給与データシートのI列+K列 給与仕訳テンプレートシートのセルG7に給与データシートのJ列+L列 給与仕訳テンプレートシートのセルG3にM列 給与仕訳テンプレートシートのセルG4にN列 給与仕訳テンプレートシートのセルG2に給与データシートのO列
②給与仕訳を一つのシートに最終行に一個ずつ付け足すようにもして
③給与仕訳を新しいシートにコピーして、それを指定したシートの最終行に一つずつ給与仕訳を追加するというのが良いです
④給与仕訳シートのデータをクリアするVBAを書いて
などなど、要件をどんどん質問してください。そうするとVBAのコードをどんどん改善してくれます。
ChatGPTも完璧ではありませんが、0から作れないようなVBAコードを作成してくれます。抽出するセルや表示するセルの箇所は、ズレていたりしますが、VBAを実行しながら自分で補正していきます。
以下、給与自動仕訳のコード
Sub CreatePayrollJournal() Dim payrollSheet As Worksheet Dim templateSheet As Worksheet Dim lastRow As Long Dim i As Long Dim employeeID As String Dim employeeName As String Dim basicPay As Long Dim commutingAllowance As Long Dim otherAllowance As Long Dim overtimePay As Long Dim employeeEI As Long Dim companyEI As Long Dim employeeHI As Long Dim companyHI As Long Dim employeePI As Long Dim companyPI As Long Dim incomeTax As Long Dim residentTax As Long Dim totalPay As Long Dim journalLastRow As Long ' 給与データシートと給与仕訳テンプレートシートと給与仕訳のオブジェクトを設定 Set payrollSheet = ThisWorkbook.Sheets("給与データ") Set templateSheet = ThisWorkbook.Sheets("給与仕訳テンプレート") Set journalSheet = ThisWorkbook.Sheets("給与仕訳") ' 給与データシートの最終行を取得 lastRow = payrollSheet.Cells(Rows.Count, 1).End(xlUp).Row ' 各行について給与仕訳を作成 For i = 2 To lastRow ' 給与データシートからデータを取得 employeeID = payrollSheet.Cells(i, 1).Value employeeName = payrollSheet.Cells(i, 2).Value basicPay = payrollSheet.Cells(i, 3).Value commutingAllowance = payrollSheet.Cells(i, 4).Value otherAllowance = payrollSheet.Cells(i, 5).Value overtimePay = payrollSheet.Cells(i, 6).Value employeeEI = payrollSheet.Cells(i, 7).Value companyEI = payrollSheet.Cells(i, 8).Value employeeHI = payrollSheet.Cells(i, 9).Value companyHI = payrollSheet.Cells(i, 10).Value employeePI = payrollSheet.Cells(i, 11).Value companyPI = payrollSheet.Cells(i, 12).Value incomeTax = payrollSheet.Cells(i, 13).Value residentTax = payrollSheet.Cells(i, 14).Value totalPay = payrollSheet.Cells(i, 15).Value ' 給与仕訳テンプレートシートにデータを転記 templateSheet.Cells(2, 1).Value = employeeName templateSheet.Cells(2, 4).Value = basicPay templateSheet.Cells(4, 4).Value = commutingAllowance templateSheet.Cells(5, 4).Value = otherAllowance templateSheet.Cells(3, 4).Value = overtimePay templateSheet.Cells(6, 7).Value = employeeEI templateSheet.Cells(8, 7).Value = companyEI templateSheet.Cells(7, 7).Value = companyHI + companyPI templateSheet.Cells(5, 7).Value = employeeHI + employeePI templateSheet.Cells(3, 7).Value = incomeTax templateSheet.Cells(4, 7).Value = residentTax templateSheet.Cells(2, 7).Value = totalPay ' 給与仕訳テンプレートシートをコピーして新しいシートにペースト templateSheet.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 'ペーストしたシートの名前を従業員名に変更 ActiveSheet.Name = employeeName ' Journalシートの最終行に給与仕訳を追加 lastRow = journalSheet.Cells(Rows.Count, 2).End(xlUp).Row templateSheet.Range("A1:G8").Copy Destination:=journalSheet.Range("A" & lastRow + 1) Next i ' 給与仕訳テンプレートシートのA列の従業員名称 D 列と G 列の数値をクリア templateSheet.Range("A2:A6").ClearContents templateSheet.Range("D2:D6").ClearContents templateSheet.Range("G2:G8").ClearContents ' 終了メッセージを表示 MsgBox "給与仕訳の作成が完了しました。" End Sub
以下、給与仕訳シートのデータをクリアにするコード
Sub ClearPayrollJournal() Dim journalSheet As Worksheet Set journalSheet = ThisWorkbook.Sheets("給与仕訳") journalSheet.Cells.ClearContents journalSheet.Cells.ClearFormats journalSheet.Cells.Clear End Sub
給与自動仕訳ツールの出力結果
給与自動仕訳ツールによる出力結果は、以下のようになります。
給与仕訳テンプレートシートを基礎として、シートを追加して以下のように従業員ごとの給与仕訳を自動的に作成します。
給与仕訳シートには、会計ソフトにインポートしやすいように従業員毎の仕訳結果を一人ずつ下へ追加していきます。
このデータをうまく活用して、会計ソフトに取り込むバッチツールを作成すれば、一気に仕訳を従業員毎に取り込むことが可能です。データの持ち方によっては、部門別にも可能となります。
また、VBAコードをうまく編集することで一気に取り込みバッチまでも作ることは可能でしょう。