アルバイトの人に給与を支払う予定です。
手取額を丸い数字(10,000円など)にしたい場合、源泉所得税の金額を逆算(グロスアップ)したい場合、少額は簡単にできたのですがある程度の金額を超えた時、訳がわからなくなってしまいました。
やりたいことは、
1.アルバイトに渡す手取り金額を0.96937で割った数字(a)が85,384円未満であれば、割返した数字に3.063%乗じた金額が源泉所得税額。
2.(a)の数字が85,384円以上であれば、国税庁HPから出ている税額表(HP https://www.nta.go.jp/publication/pamph/gensen/z …)から数字を拾う。(今回は、他でお仕事されている方なので乙欄です)
3.2で求めた税額と手取額の合計額が税額表の税額と一致するまで反復計算
例 手取り18万円とすると、源泉所得税額の金額は20,900円となり、支給総額は200,900円。
↑これを簡単にExcelでできれば・・・と思っています。
毎回自力で計算していますが、間違えるのではないかと毎回ドキドキしています。
どなたかお力を貸して下さい。
よろしくお願いします。
No.8ベストアンサー
- 回答日時:
C1に計算月を指定するものとします。
前回のマクロは全て破棄してください。
以下のマクロを標準モジュールに登録してください。
---------------------------------------------------------
Option Explicit
Const rate As Variant = 0.96937 '割率
Const Taxrate As Variant = 0.03063 '掛率
Const minVal As Variant = 85384 '総支給額の閾額
Const unit As Long = 100 '単位円
Public Sub 税額計算()
Dim maxrow As Long
Dim row As Long
Dim getRow As Variant
Dim tax As Variant
Dim total As Variant
Dim errmsg As String
Dim result As Boolean
Dim mm As Long
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim col As Long
Set sh1 = Worksheets("税額計算")
Set sh2 = Worksheets("月額表")
mm = sh1.Cells(1, "C").Value
If mm < 1 Or mm > 12 Then
MsgBox ("計算月エラー")
Exit Sub
End If
col = (mm - 1) * 6 + 2
maxrow = sh1.Cells(Rows.Count, 1).End(xlUp).row ' A列最終行を求める
For row = 5 To maxrow
'B列~E列をクリア
sh1.Cells(row, col + 2).Value = ""
sh1.Cells(row, col + 3).Value = ""
sh1.Cells(row, col + 4).Value = ""
sh1.Cells(row, col + 5).Value = ""
result = GetTax(sh1.Cells(row, col + 1).Value, tax, total, getRow, errmsg, sh2)
If result = True Then
'正常終了なら、税額、総支給額、月額表の行番号を設定
sh1.Cells(row, col + 2).Value = tax
sh1.Cells(row, col + 3).Value = total
sh1.Cells(row, col + 4).Value = getRow
Else
'異常終了ならエラーメッセージを設定
sh1.Cells(row, col + 5).Value = errmsg
End If
Next
MsgBox ("完了")
End Sub
'税額算出
Private Function GetTax(ByVal tedori As Variant, ByRef tax As Variant, ByRef total As Variant, ByRef getRow As Variant, ByRef errmsg As String, ByVal ws As Worksheet) As Boolean
Dim val As Variant
Dim row As Long
Dim wtax As Long
Dim wtotal As Long
tax = Null
total = Null
getRow = Null
errmsg = ""
GetTax = False
If tedori = "" Then
Exit Function
End If
If IsNumeric(tedori) = False Or tedori < 1 Then
errmsg = "入力エラー"
Exit Function
End If
If tedori Mod unit <> 0 Then
errmsg = "最小単位は" & unit & "円です"
Exit Function
End If
val = tedori / rate
val = Fix(val)
'総支給額が85384円未満の場合
If val < minVal Then
total = val
tax = total - tedori
GetTax = True
Exit Function
End If
'総支給額が85384円以上のケース(月額表の10行~350行までトライする)
For row = 10 To 350
If ws.Cells(row, "B").Value <> "" Then
'L列の税額+手取り額を総支給額とする
wtax = ws.Cells(row, "L").Value
wtotal = tedori + wtax
'該当条件にマッチした場合 (B列の値≦総支給額<C列の場合)
If wtotal >= ws.Cells(row, "B").Value And wtotal < ws.Cells(row, "C").Value Then
getRow = row
tax = wtax
total = wtotal
GetTax = True
Exit Function
End If
End If
Next
errmsg = "該当なし"
End Function
No.7
- 回答日時:
状況わかりました。
その場合、何月の計算を行うかを指定させた方が良いかと思います。
添付図のC1セル(黄色部分)に計算を行う月(1~12)を指定させ、その月の該当箇所の計算を行うのはいかがでしょうか。
(例では1月の月の箇所の計算を行うことになります)
もし、C1で困る場合は、他のセルをご提示ください。
又、年間を通した場合、人の増減もありますので、その人が計算対象の月に、いないことも考えられます。
その場合、手取り額が空白になりますが、今までは、エラーメッセージに「入力エラー」を表示していました。
このケースの場合、手取り額は意図的に空白にしたと考えられるので、この場合は、エラーメッセージを空白にしたほうが良いかと
思いますがいかがでしょうか。添付図の緑の部分(名前6の人の1月分の手取り)を参照ください。
No.6
- 回答日時:
>我が儘かもしれないのですが1年間を通じて1つのシートで計算したいので(年末の源泉徴収票作成用に)、横にどんどん追加していこうと考えたのですが、1つのシートに登録できるマクロは1つだけになるのでしょうか?
>(自分で、試行錯誤してモジュールを追加してみましたが、最初のところだけが自動計算され、他の所は何も動かなかったので・・・)
>イメージは、A列に氏名B列に手取り、C列に税額、D列に総支給額、E列に該当行、F列にエラーメッセージ、G列手取り、・・・と続いていくイメージです。
>不可能であれば、1月ずつシートを作成し、最後に串刺し計算したいと思います。(グロスアップ計算が自動でできたことだけでも奇跡のようなものなので)
すみません。よくわかりませんので、私が提示したような画像を提示していただけませんでしょうか?
windowsのアクセサリのSnipping Toolを使うと簡単に画像が切り取れます。
それをアップしてください。(私が提示した画像もSnipping Toolを使っています)
No.5
- 回答日時:
No2です。
以下のマクロを標準モジュールに登録してください。
必ず、”税額計算”と”月額表”のシートを作成してください。
”税額計算”のA列の2行目以降に手取り額を記入してください。(1行目は見出しです)
"月額表"はシートのコピーを行って作成してください。(コピペはしないほうが良いかと)
データのレイアウトがずれているとマクロが誤動作します。
"月額表"の10行~350行に乙の税額が記載されているので、それを対象にしています。
-----------------------------------------------------------
Option Explicit
Const rate As Variant = 0.96937 '割率
Const Taxrate As Variant = 0.03063 '掛率
Const minVal As Variant = 85384 '総支給額の閾額
Const unit As Long = 100 '単位円
Public Sub 税額計算()
Dim maxrow As Long
Dim row As Long
Dim getRow As Variant
Dim tax As Variant
Dim total As Variant
Dim errmsg As String
Dim result As Boolean
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("税額計算")
Set sh2 = Worksheets("月額表")
maxrow = sh1.Cells(Rows.Count, 1).End(xlUp).row ' A列最終行を求める
For row = 2 To maxrow
'B列~E列をクリア
sh1.Cells(row, 2).Value = ""
sh1.Cells(row, 3).Value = ""
sh1.Cells(row, 4).Value = ""
sh1.Cells(row, 5).Value = ""
result = GetTax(sh1.Cells(row, 1).Value, tax, total, getRow, errmsg, sh2)
If result = True Then
'正常終了なら、税額、総支給額、月額表の行番号を設定
sh1.Cells(row, 2).Value = tax
sh1.Cells(row, 3).Value = total
sh1.Cells(row, 4).Value = getRow
Else
'異常終了ならエラーメッセージを設定
sh1.Cells(row, 5).Value = errmsg
End If
Next
MsgBox ("完了")
End Sub
'税額算出
Private Function GetTax(ByVal tedori As Variant, ByRef tax As Variant, ByRef total As Variant, ByRef getRow As Variant, ByRef errmsg As String, ByVal ws As Worksheet) As Boolean
Dim val As Variant
Dim row As Long
Dim wtax As Long
Dim wtotal As Long
tax = Null
total = Null
getRow = Null
errmsg = ""
GetTax = False
If tedori = "" Or IsNumeric(tedori) = False Or tedori < 1 Then
errmsg = "入力エラー"
Exit Function
End If
If tedori Mod unit <> 0 Then
errmsg = "最小単位は" & unit & "円です"
Exit Function
End If
val = tedori / rate
val = Fix(val)
'総支給額が85384円未満の場合
If val < minVal Then
total = val
tax = total - tedori
GetTax = True
Exit Function
End If
'総支給額が85384円以上のケース(月額表の10行~350行までトライする)
For row = 10 To 350
If ws.Cells(row, "B").Value <> "" Then
'L列の税額+手取り額を総支給額とする
wtax = ws.Cells(row, "L").Value
wtotal = tedori + wtax
'該当条件にマッチした場合 (B列の値≦総支給額<C列の場合)
If wtotal >= ws.Cells(row, "B").Value And wtotal < ws.Cells(row, "C").Value Then
getRow = row
tax = wtax
total = wtotal
GetTax = True
Exit Function
End If
End If
Next
errmsg = "該当なし"
End Function
tatsu99 様
とっても詳しく教えて頂きありがとうございます!
できました!!
我が儘かもしれないのですが1年間を通じて1つのシートで計算したいので(年末の源泉徴収票作成用に)、横にどんどん追加していこうと考えたのですが、1つのシートに登録できるマクロは1つだけになるのでしょうか?
(自分で、試行錯誤してモジュールを追加してみましたが、最初のところだけが自動計算され、他の所は何も動かなかったので・・・)
イメージは、A列に氏名B列に手取り、C列に税額、D列に総支給額、E列に該当行、F列にエラーメッセージ、G列手取り、・・・と続いていくイメージです。
不可能であれば、1月ずつシートを作成し、最後に串刺し計算したいと思います。(グロスアップ計算が自動でできたことだけでも奇跡のようなものなので)
何度もすみませんが、もう一度お力を貸して頂けると大変嬉しいです。
No.4
- 回答日時:
No2です。
もし、マクロで実現する場合の前提です。
マクロ不可の場合は、No3、及び、この補足要求の回答は不要です。
手取額を丸い数字(10,000円など)にしたいということですが、
具体的には1万円単位でしょうか。それとも、千円単位、百円単位、十円単位でしょうか。
手取り額を入力時に、手取り額が指定された単位の整数倍になっていなければ、エラーにすることは可能です。
その場合、いくらの単位にするかをご提示ください。
尚、手取り額が1円単位でも、税額の算出は可能です。その場合は、総支給額が1円単位になります。
どちらを選択するかは質問者様のほうで決めてください。
No.2
- 回答日時:
マクロなら実現可能です。
添付図の「税額計算」のA列(青色部分)に手取り額を入力します。(複数行入力可能)
マクロを実行すると、B~Eに結果が表示されます。
B列:税額
C列:総支給額
D列:月額表で採用した税額の該当行
E列:エラーがあった場合のエラーメッセージ
上記のようなマクロで良ければ提供可能です。
月額表は、国税庁の「給与所得の源泉徴収税額表(月額表)(1から7ページ)」のexlcel(01-07.xls)の月額表をコピーしたものです。
(この月額表であってますか?)
No.1
- 回答日時:
確認させてください。
》 手取り金額を0.96937で割った数字(a)が85,384円未満であれば、
》 割返した数字に3.063%乗じた金額が源泉所得税額
2つの言葉「割った数字」と「割返した数字」との違いは?
上で仰っている「割返した数字」は具体的にどう計算された数字ですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
車の整備費(6ヶ月点検、車検など)を先にパック料金で払いました。
財務・会計・経理
-
Excelで源泉所得税の額を甲欄・乙欄両方に対応したい
Visual Basic(VBA)
-
ドルの円換算は切り捨て?それとも四捨五入?
財務・会計・経理
-
-
4
通帳に「ミツイスミトモFL(」と印字されているんだが・・・
その他(お金・保険・資産運用)
-
5
エクセル関数で源泉徴収額を計算したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
運送会社が商品を破損してしま...
-
消費税の区分について
-
エクセルで課税、非課税を自動...
-
経理です。車検の時の勘定科目...
-
収入印紙について(仲介契約書...
-
累積課税合計とは何ですか?
-
公文書公開に伴うコピー料金等
-
アマチュア団体の出演謝礼に税...
-
印紙税額を求める関数
-
被課税とは
-
楽天社の社員食堂は無料だそう...
-
DIY 小屋の登記と固定資産税
-
「消費税の納税義務者でなくな...
-
税込価格が5500円の商品を20%値...
-
講師代をもらって領収書を書く...
-
承諾書の印紙税
-
自動車部品を個人輸入した際の...
-
給料 手取額からの源泉所得税の...
-
税務調査 追徴課税500万! い...
-
『課税仕入れに係る支払対価の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
運送会社が商品を破損してしま...
-
経理です。車検の時の勘定科目...
-
消費税の区分について
-
印紙税額を求める関数
-
被課税とは
-
自動車部品を個人輸入した際の...
-
建設業の「安全協力費」の会計...
-
アマチュア団体の出演謝礼に税...
-
公文書公開に伴うコピー料金等
-
エクセルで課税、非課税を自動...
-
消費税計算で誤差が生じるのは...
-
建設業者が工事保険をもらった...
-
JPYで表記されている金額について
-
アメリカから革ジャンを通販で...
-
使用貸借契約の印紙税
-
給料 手取額からの源泉所得税の...
-
市役所と消費税
-
「消費税の納税義務者でなくな...
-
収入印紙は、必要ないのかな?
-
市民税の督促手数料は非課税と...
おすすめ情報
mike_g 様
すみません。日本語の文章がおかしかったです。申し訳ありません。
具体的な数字で説明しますと・・・
手取金額を0.96937で割った数字というのは、乙欄の最低税額(給与に3.063%を乗じた金額)があるので、総支給額を仮計算するのに使いました。
例その1:手取り10,000円の時
10,000÷0.96937=10,315(85,384円未満なので、ここで計算終わり)
総支給額は10,315円、 税額は315円
続きます・・・
mike_g 様
続きその1です。
例その2:手取り180,000円の時
180,000÷0.96937=185,687円(1円未満切り捨て)
185,687>=85,384なので、税額表より税額を探してくる。
見当を付けるために、
①手取り金額を0.96937で割った185,687円の税額を税額表から探すと16,000円
手取180,000+税額16,000=196,000円(仮の総支給額)
仮の総支給額196,000円の税額を税額表で確認・・・19,500円
196,000-19,500≠180,000なので税額16,000は、誤り。
②19,500が税額だったら?と仮定すると、仮の総支給額は手取180,000+19,500で199,500円。
199,500円の税額を税額表で確認・・・20,900円
199,500-20,900≠180,000
なので、税額19,500円も誤り。
mike_g 様
続きその2です。
③税額20,900円ならば?と仮定すると、仮の総支給額は180,000+20,900で200,900円
200,900円の税額を税額表で確認・・・20,900円
200,900-20,900=180,000
手取金額と一致したので、手取り180,000円の場合、総支給額200,900円 税額は20,900円
とこのような計算をExcelでできれば・・・と考えています。
わかりにくい質問ですみません。
tatsu99様
お返事ありがとうございます。
まさに私が望んでいること(表もバッチリ合っています)も、エクセルの表示も理想のものです。
支給単位は100円単位で考えています。
よろしくお願い致します。
tatsu99 様
Shipping Tool の存在を初めて知りました(本当にPCオンチなのがお恥ずかしい・・・)
添付の図(あれからやっぱり支給日も欲しい!と欄を1つ追加してしまいました)のようにA列は人の名前、B列は支給日(この場合は1月)、C列に手取り金額、D列に税額、E列に総支給額・・・というように12ヶ月連続させます。
こんな説明で大丈夫でしょうか・・・?
tatsu99 様
仰るとおり、毎月同じ人が働くわけではないので、手取り額を意図的に空白にしているのでエラーメッセージは空白だと嬉しいです。