改造へのヒント
---これであなたも脱初心者---
新規にエクセルを起動し、次の数字をそれぞれのセルに入力して下さい。
数字 セルのアドレス
10 B3
20 B4
30 B5
どうですか? 縦一列に入力できましたか?
次にこの数字を参照する"式"をセルに入力します。
式 セルのアドレス
=B3 D7
セルD7に入力する"式"はキーボードから半角入力してもいいですし、=記号を押してからマウスでターゲットとなるセル(ここではB3)をクリックしてもいいです。
セルD7に"10"が表示されましたね。
では次に、このセルD7を下方向に2回(つまりD8とD9のセルに)コピーして下さい。
どうですか? セルD8に20が、セルD9に30が表示されましたね。
このようにエクセルでは、式(ここでは=B3)をコピーするとその式が参照しているセルのアドレスが自動的に修正され、セルD8には=B4、セルD9には=B5という新しい修正後の式がコピーされます。
今回は縦方向にコピーしたので、式の中の行番号が3から4、5へと修正されました。
セルD8とセルD9をクリックして中の式をそれぞれ自分で確認して下さい。
次に進む前に、セルD7,D8,D9を全部消しておいて下さい。
今度は、セルD7に =B$3 とキーボードから半角入力して下さい。
そしてこれをさっきと同じように下方向へ2回(つまりD8とD9のセルに)コピーして下さい。
どうですか? 今度はすべて10になりましたね。
コピー元の式の行番号3の前に$マークをつけたので、行番号3が修正されなかったのです。
このように、コピーすると自動的に修正されるようなセルのアドレス指示を相対セル参照といいます。
B3 といった指示方法だと、列番号も行番号も自動的に修正されるわけです。
これに対し、$B$3 といった指示方法だと、コピーしても列番号も行番号も修正されなくなります。
このように$マークを前につけてセルのアドレスを固定する方法を絶対セル参照といいます。
このワークシートでは、あなたが入力した給与の金額を基に、源泉表から税額を拾ってきます。
IF関数が参照している源泉表の中のセルのアドレスは固定ですので、$マークを使って絶対セル参照しています。
御自分でこの関数をあちこちコピーして使うときは、$マークを使って税額を拾いに行くセルを固定していることを、どうかくれぐれもお忘れなく。
社員の扶養親族等の人数は、それぞれ違うことがあります。
この場合、給料支払明細書の下にある計算式を他のエクセルのファイルからコピーして使うことになります。
しかしエクセルでは、他のファイルから計算式をコピーすると、いろいろと余計な修正をしてくれます。
まずは解凍してできた"給与明細"フォルダを、あらかじめデスクトップに移動して下さい。
次に、元になる表として"給与明細"フォルダの中の"扶養0給料.xls"を開いてください。
これからこれをいじるので、先に必ず別の"名前を付けて保存"しておいて下さい。(基本ですね。)
あなたがいま"名をつけて保存"した表の1人目(左側)に入力する社員は、扶養親族等が0人だとします。
この社員の源泉税は、源泉表の扶養人数0人の税額を参照すればいいので、このまま使うものとします。
次に、2人目(中央)の社員は扶養親族等が2人だとします。
この場合、この社員の源泉税は源泉表の扶養人数2人の税額を参照しなければなりませんので、ファイル名"扶養2給料.xls"の計算式をコピーして使うことにします。
"扶養2給料.xls"を開き、そこの2人目の社員の税額計算式Q39からQ419までのセルを範囲指定して"コピー"して下さい。
(水色と黄色で色が塗ってあるところ全部です。)
次に、これを元の(あなたが名前をつけて保存した)表の2人目の社員の税額計算式のあるところQ39からQ419に"貼り付け"して下さい。
これで計算式のコピーができたのですが、しかしエクセルが計算式を勝手に修正しています。(うちのエクセルではそうなります。)
そこでこれをコピーする前の状態、つまり"扶養2給料.xls"にある計算式とまったく同じ状態に手で修正し直してください。
やり方は、あなたが名前をつけて保存した表の2人目の税額計算式のあるところQ39をクリックして下さい。
すると修正後のながーーい計算式が
=IF(Q$38>=[扶養2給料.xls]源泉!$A3,IF(Q$38<[扶養2給料.xls]源泉!$B3,[扶養2給料.xls]源泉!$E3,-1),-1)
あるいは、
=IF(Q$38>='C:\WINDOWS\デスクトップ\給与明細\[扶養2給料.xls]源泉'!$A3,IF(Q$38<'C:\WINDOWS\デスクトップ\給与明細\[扶養2給料.xls]源泉'!$B3,'C:\WINDOWS\デスクトップ\給与明細\[扶養2給料.xls]源泉'!$E3,-1),-1)
と表示されます。(Windows版の場合。環境により多少変わります。)
このままではこのIF関数は、給与明細フォルダの中のエクセル・ブック"扶養2給料.xls"の中のワークシート"源泉"を探しに行ってしまいます。
ワークシート"源泉"は、扶養0給料.xlsでも扶養2給料.xlsでも、他のエクセル・ブックのワークシート"源泉"でもすべて同じです。
いちいち他のエクセル・ブックのワークシート"源泉"をみる必要はありません。
そこでIF関数が、あなたが名前をつけて保存したエクセル・ブックの中にあるワークシート"源泉"を参照するように修正します。
よけいなディレクトリ名 Q$38>=[扶養2給料.xls]源泉!$A3,IF(Q$38<[扶養2給料.xls] (あるいは、C:\WINDOWS\デスクトップ\給与明細\[扶養2給料.xls]) をすべて削除すればいいのです。
このとき、ディレクトリ名の最初と最後をあらわす ' 記号も2個ずつありますので、これも忘れずに削除して下さい。
=IF(Q$38>=源泉!$A3,IF(Q$38<源泉!$B3,源泉!$E3,-1),-1)
となればOKです。ずいぶんスッキリしましたね。
次にこのセルQ39を、その下の水色のセルすべてにコピーします。
黄色のセルにはコピーしてはいけません。
黄色のセルの計算式は、いちいち手で修正して下さい。要領はさっきと同じく、よけいなディレクトリ名を削除するだけです。
すべてコピーできたら、いくつか金額を入力してテストしてみましょう。
水色のセルの計算式だけでなく、黄色のセルの計算式も正しく動作していますか?
税務署配布の源泉徴収税額表(月額表)とにらめっこしながら、テストは必ず行って下さい。
最後に動作確認をきっちりテストするのが鉄則です。
もっと詳しく理解したいという方のために、関数でやっていることを解説します。
これが理解できれば、たとえば社会保険料の自動計算をさせる、といった応用も将来可能かと思います。
まず、ファイル名"扶養0給料.xls"を開けて下さい。これを例に解説します。
まず、一人目の社員の基本給(セルE14)に80000円とあらかじめ入力しておいて下さい。
E39のセル(水色の1番上のセル)で、IF関数を使って、A.社保料控除後課税給与合計(セルE38 80,000円)が源泉表(ワークシート"源泉")の1番上の条件(0円以上 87,000円未満)を満たすかどうか判定しています。
一般的なIF関数モデルは =IF(条件, 真の場合の答え, 偽の場合の答え) です。
条件を満たした場合(真の場合といいます。)は"真の場合の答え"が実行され、条件を満たさない場合(偽の場合といいます。)は"偽の場合の答え"が実行されます。ここでは、これをさらに応用して
=IF(第一条件, IF(第二条件, 第二条件の真の場合の答え, 第二条件の偽の場合の答え), 第一条件の偽の場合の答え) としています。
第一条件を満たす真の場合の答えが、IF(第二条件, 真の場合の答え, 偽の場合の答え) となっているところがポイントです。
セルE39の実際の関数 =IF(E$38>=源泉!$A3, IF(E$38<源泉!$B3, 源泉!$C3, -1), -1)
もしも第一条件( E$38>=源泉!$A3 の部分・・・元のワークシートのE38がワークシート源泉のA3以上であるという意味)を満たしていれば、次に真の場合の答えである IF(第二条件,真の場合の答え,偽の場合の答え) つまり IF(E$38<源泉!$B3, 源泉!$C3, -1) が実行されます。
そして第二条件( E$38<源泉!$B3 の部分・・・元のワークシートのE38がワークシート源泉のB3未満であるという意味)を満たしていれば、第二条件の真の場合の答えである 源泉!$C3(ワークシート源泉のC3の値を取るという意味)が実行され、めでたく源泉税0円が入ります。
しかし第二条件を満たさなかった場合は、第二条件の偽の場合の答え、すなわち -1 が入力されます。
また、最初から第一条件を満たさない場合には、第一条件の偽の場合の答えである -1 がやはり入力されます。
第一条件、第二条件とも偽の場合の答えは、-1でも-10でも-100でもよいのですが、必ずマイナス値とするのがミソです。
これは第二条件を満たした場合(真の場合)の答えである、源泉税額の最小値がゼロだからです。
つまり偽の場合は、必ず第二条件の真の場合の答え(ゼロ以上の源泉税額)より小さくなる(マイナス値)わけです。
なお、これを下方向にコピーするとき、行番号を自動修正させて列番号は固定しておくため、列番号の前にのみ$マークをつけています。
=MAX(E39:G419)
という関数が入っています。
MAX関数というのは、その範囲内で最大値を選択する、という関数です。
つまりセルE39からG419までの範囲内で最大値を取ってくるわけです。
IF関数が偽の場合はマイナス値 -1 が入っていますから、ここでの最大値は必ず第二条件の真の場合の答え、つまりゼロ以上の源泉税額になります。
したがって必ず源泉税が選択されるのです。