- ベストアンサー
IF関数のネストレベル7以上の条件を分岐させたい。
IF関数のネストレベル7以上の条件を分岐させたいんです。 http://urokisa.blog123.fc2.com/blog-entry-7.htmlにある方法も試してみましたが、うまくいきませんでした。 他に方法があるようですが、どのようにすればよろしいでしょうか。 具体的に作成するものは、http://www.nta.go.jp/shiraberu/ippanjoho/pamph/gensen/zeigak...にある「給与所得の源泉徴収税額表(日額表)」を基に、一日の日給を基に源泉徴収税額が分かるようにしたいのです。 2,900円未満から13,000円位の条件を付与したいのです。 考えたのは、たとえば、IF関数を用いて、日給が入力されてあるセルの数字が「3,000」(円)であればば「4」を表示する関数を入力して、隣のセルにVLOOKUPで日額表の税額を表示させようと思いました。 しかしながら、条件が多すぎてなかなか上手くいきません。 ご教授願います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1.ifの入れ子レベルをもっと深くしたい。 2.税額を計算したい 2つありますが、2.が解決すれば1.はいいようですね。 税額表を直接使ってVLOOKUPではだめなのですか。 http://www.nta.go.jp/shiraberu/ippanjoho/pamph/gensen/zeigakuhyo2006/01.htm にEXCELファイルがありますが。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
第1の点 IF関数のレベル 2003以前はIF関数のレベルは7つ以下だったと記憶する。 しかしIF関数のレベルが3つ以上になったら、他の方法はないか反省(他の関数を 使えないか調べる)することが必要だ。それ以上を越えてやっている回答があると したら、その回答は真似しないほうが良い。 普通、過度のIF関数レベルを使うのは、初心者が良く考えないで、最初の思い つきの思考パターンを押し通そうとしている、力ずくの稚拙なやり方だ。 ーー どうしてもやりたかったら、2007では64まで拡張されたらしいから そちらを使えばよい。 http://officetanaka.net/excel/excel2007/036.htm しかし私は絶対使わない。 ーーー 第2の点 思考パターンに「もし何々の場合」というパターンがでてきたとしても、IF関数を 使うべきとは限らない。他の便利な関数、例えばVLOOKUP、MATCH、INDEX関数など には、その処理の中に「もし何何の場合は何々」と「もし」で頭の中で考える 要素はあるが、IF関数を使わないようにこういう関数は作られている。 コンピュタ言語などもIF文追放の線に進んでいるように思う。 ーー 1次元的なデータ(列、行の中で探す)の場合はVLOOKUPのTRUEやFALSE型の利用を 検討すべきだ。 2次元的なデータ(縦横の表の中で探す)の場合、INDEX関数で=INDEX(表範囲、行指定 列指定)で探す。 行や列を決める(探す)のはMATCH関数を使い=MATCH(探す値、列や行範囲、照合の型) を使う。称号の型にはー1、0、1の3つあるので適宜使い分けること。 ーーー 質問者は、これらの関数を検討した形跡が無いのは、エクセル関数の中級レベルに達して無いよ。 WEBや解説書にはこういう関数はハイライトとして解説が沢山ある。雑誌日経PCなど毎月解説 している。そういう色々関数がある中、「通して」エクセルの有用な関数を勉強して ないようだ。 ーー 源泉徴収税額表データは国税庁が作ったものが利用できるのはご存知か。 http://www.nta.go.jp/shiraberu/ippanjoho/pamph/gensen/zeigakuhyo2006/01.htm エクセルデータもある。 知らないとすればいろいろなところに目配り不足だ。 ーーー またこういう作業をエクセル関数でやるのは荷が重いのでは。日額や月額その他何次元にも 表があることも難しくなっている。 期限も迫っているかもしれないし、エクセル関数経験もまだまだらしい人がや急いで る課題かな。 計数(税額)を間違えたら、結果は重大だよ。訂正も面倒。 出来合いのソフトを買ったほうが良いのでは。 普通はシステム部とか、VBAぐらいできる人が、VBAなどで処理する課題ではないかな。 実社会ではどうなんだろうか。
お礼
私の知識不足でした。 Excel初級者ではありますが、他の関数についても確り勉強致します。 税額については、目安を知ることが出来ればかまわないので、問題ありません。 従業員数3名の知り合いから頼まれたものなので詳しい方が全くいらっしゃいません。 有難うございました。
- zap35
- ベストアンサー率44% (1383/3079)
これは日額と扶養家族の配列ですからIF関数ではとても無理です。 シート1 A列 B列 C列 D列 … I列 1行目 扶養→ 0人 1人 2人 … 7人 2行目 0 0 0 0 0 3行目 2900 5 0 0 0 4行目 2950 5 0 0 0 5行目 3000 10 0 0 0 6行目 3050 10 0 0 0 最後は日額33000円まで表を貼り付ける(304行目までデータがはいるはず) シート2のA1に日額、B1に扶養家族人数を入力し =OFFSET(Sheet1!$B$1,MATCH(A1,Sheet1!$A$1:$A$304,1)-1,B1) で源泉徴収額が出ます 例えばA1に「10450」、B1に「2」を入力すると結果は「185」になります。今回はOFFSET関数を使用しましたがINDEX関数でもできます。 そちらは他の回答者様が答えてくれるかもしれません。
お礼
回答有難うございました。 様々な方法があるようですが、私の知識不足でした。
- maac777
- ベストアンサー率50% (43/86)
直接の回答ではありませんが、ご質問の目的を実現するなら別の方法がありそうです。たとえばN2に給与額を入力する場合 =SUMPRODUCT((B14:B318<=N2)*(C14:C318>N2)*(L14:L318)) とすると乙税額がでてきます。 (下のデータはhttp://www.nta.go.jp/shiraberu/ippanjoho/pamph/gensen/zeigakuhyo2006/data/02.xlsを直接開いたものです) 条件をもう一段増やして扶養家族の人数による場合分けなどにも応用できますよ。
お礼
回答有難うございます。 私の知識不足でした。 VLOOKUPで検索の型をTRUEにすれば実現できました。
お礼
VLOOKUPのFALSEとTRUEの違いを理解しておりませんでした。 給与額と完全一致でないと利用できないと思っておりました。 ご回答頂いたとおり、VLOOKUPでOKでした。