【給与計算】所得税を自動で出せるようにしてみた
大きい会社はどこもシステムがあるので不要な話でしょうけれど、何せ弊社は社員ウン十人の中小企業。
専用のシステムなんぞございません。ソフトもありません。
Excelで給与計算です。
特に面倒くさいのが所得税で、私の前任の方は源泉徴収税額表を見ながら手打ちしていたようです。
しっかしこれが数十人いると面倒くさいことこの上ない。
扶養人数によって金額が変わるのも面倒くさい。
よし!源泉徴収税額表から自動で出せるようにしよう!と前任者から貰ったPDFをAcrobatでExcelに書き出し、開いたら縦軸がセルで分割されておらず改行されており悶絶。
それをWordにコピペし、Excelに戻して分割して形を整えて…
とやった後に、国税庁のサイトでExcelデータも配布しているのに気付いた (´・ω・`)
無駄な数時間を過ごしてしまった…!
そういうことなので、表のデータは国税庁から貰えます。
で、それを使用して作った関数を記しておきます。
【例】
=INDEX(税額一覧!$C$7:$J$292,MATCH(B2,税額一覧!$A$7:$A$292,TRUE),MATCH(B3,税額一覧!$C$4:$J$4))
Sheet名:Sheet1
Sheet名:税額一覧
税額一覧というのは別シートにしたので、そのシートの名前です。
A292はA列の一番最後の行です。
状況によって適宜変えてください。
次に指定した行と列の値を返すINDEX関数を使います。
INDEX(インデックス)関数
=INDEX(範囲,行位置,列位置,領域番号)
INDEX関数の行位置と列位置を変動させたいので、ここに範囲内で特定の値を検索し、見つかった値が何番目に位置するかを返すMATCH関数を入れます。
MATCH(マッチ)関数
=MATCH(検索値,範囲,照合の方法)
さらに行位置を指定するMATCH関数の、照合の方法の所にTRUEを入れると、
○以上、×未満という抽出のしかたが出来ます。
これを省略するとA列の数値に一致しないとエラーになります。
これはVLOOKUPでも使えます。
後は適当に使ってるデータに合わせて応用してください。
使用する際は間違いが無いかを確認して自己責任でお願いします。
参考資料
一覧表を“縦横”に調べ、該当するデータを取り出す | 日経 xTECH(クロステック)
【エクセル時短】縦横で交わるデータを取り出す!「クロス抽出」を実現する関数の組み合わせとは? | Excel | できるネット
ExcelのVLOOKUP関数で「○以上△未満」の条件で表を検索する方法 | できるネット