[[20060609121502]] 『IFをあと2つ追加したいのですがエラーになってし』(たいへい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『IFをあと2つ追加したいのですがエラーになってしまいます。』(たいへい)
お世話になります。下記の関数を作りましたが、あとIF(TRUE=$N$5,N6/AC15*100)とIF(TRUE=$O$5,O6/AC15*100)を追加したいのですが、これ以上は追加出来ませんでした。関数もかなりベタでもっと簡単に出来そうですが、これくらいしか思い浮かびません。良い方法がありましたら教えてください。また、追加出来ない理由としてIF関数を並べる数に限界があるのか、カッコを付ける数に限界があるのか、それとも関数自体がおかしいのかそのへんもご説明頂けたら幸いです。以上宜しくお願い致します。Excel2000 Windows2000

=IF(TRUE=$F$5,F6/AC15*100,IF(TRUE=$G$5,G6/AC15*100,IF(TRUE=$H$5,H6/AC15*100,IF(TRUE=$I$5,I6/AC15*100,IF(TRUE=$J$5,J6/AC15*100,IF(TRUE=$K$5,K6/AC15*100,IF(TRUE=$L$5,L6/AC15*100,IF(TRUE=$M$5,M6/AC15*100,0))))))))


 >追加出来ない理由としてIF関数を並べる数に限界があるのか、カッコを付ける数に
  限界があるのか、それとも関数自体がおかしいのかそのへんもご説明頂けたら幸いです。

 IF関数のネスト(入れ子)は7個まで、というがエクセルの仕様のようです。
                                                                 (P)

 式を書いたけど、参照間違い。削除。
(みやほりん)(-_∂)b

 私もベタな式しか書けないので、ネストが7を超えるときは、隣のセルに続きを書いています。(prosit)

 この数式が入力されるセルアドレス、および式をコピーする場合の方向を
教えてください。(みやほりん)(-_∂)b

 この後の展開が、判りませんが、とりあえず、このようにしますと、
 ご提示の数式と同様の結果が、得られるように思います。         

 =IF(OR(F5:O5),HLOOKUP(TRUE,F5:O6,2,)/AC15*100,0)

 F5:O5がTRUE、FALSEということでは、ない場合には、
 配列数式ですが、そのように変換して

 =IF(OR(F5:O5),INDEX(F6:O6,MATCH(TRUE,IF(F5:O5,TRUE),))/AC15*100,0)
 Enterの代わりにCtrl+Shift+Enterとするものなのですが。。。           (LOOKUP)

いろんな方法があると思います。

 1、名前の定義の使用

 2、前後に分ける
 =IF(COUNTIF(F5:J5,TRUE),IF(TRUE=$F$5,F6/AC15*100,IF(TRUE=$G$5,G6/AC15*100,
 IF(TRUE=$H$5,H6/AC15*100,IF(TRUE=$I$5,I6/AC15*100,IF(TRUE=$J$5,J6/AC15*100,))))),
 IF(TRUE=$K$5,K6/AC15*100,IF(TRUE=$L$5,L6/AC15*100,
 IF(TRUE=$M$5,M6/AC15*100,IF(TRUE=$N$5,N6/AC15*100,IF(TRUE=$O$5,O6/AC15*100,))))

 2の2(TRUEが一つの場合)
 =IF(TRUE=$F$5,F6/AC15*100,IF(TRUE=$G$5,G6/AC15*100,
 IF(TRUE=$H$5,H6/AC15*100,IF(TRUE=$I$5,I6/AC15*100,IF(TRUE=$J$5,J6/AC15*100,))))
 +IF(TRUE=$K$5,K6/AC15*100,IF(TRUE=$L$5,L6/AC15*100,
 IF(TRUE=$M$5,M6/AC15*100,IF(TRUE=$N$5,N6/AC15*100,IF(TRUE=$O$5,O6/AC15*100,))))

 3、他の関数を使用
 =HLOOKUP(TRUE,F5:O6,2,)/AC15*100
 =SUMIF(F5:O5,true,F6:O6)/AC15*100

 by しげちゃん

 衝突しました。
私のは、なにも考えないで、ただつなぐ工夫をしただけの例です。 長いので改行します。
=IF(OR(TRUE=$F$5,TRUE=$G$5,TRUE=$H$5),
IF(TRUE=$F$5,F6/AC15*100,IF(TRUE=$G$5,G6/AC15*100,IF(TRUE=$H$5,H6/AC15*100,0))),
IF(OR(TRUE=$I$5,TRUE=$J$5,TRUE=$K$5),
IF(TRUE=$I$5,I6/AC15*100,IF(TRUE=$J$5,J6/AC15*100,IF(TRUE=$K$5,K6/AC15*100,0))),
IF(OR(TRUE=$L$5,TRUE=$M$5,TRUE=$N$5,TRUE=$O$5),
IF(TRUE=$L$5,L6/AC15*100,IF(TRUE=$M$5,M6/AC15*100,IF(TRUE=$N$5,N6/AC15*100,IF(TRUE=$O$5,O6/AC15*100,0))))
,0)))
見直していないので、書き間違いがあるかも???
(sin)  文字数は432までだったかな?


 よく見ると、よけいなものがありましたね

 =IF(COUNTIF(F5:J5,TRUE),IF(TRUE=$F$5,$F$5,IF(TRUE=$G$5,G6,IF(TRUE=$H$5,H6,IF(TRUE=$I$5,I6,J6)))),
 IF(TRUE=$K$5,K6,IF(TRUE=$L$5,L6,IF(TRUE=$M$5,M6,IF(TRUE=$N$5,N6,O6)))))/AC15*100

 by しげちゃん

 HLOOKUPだな、って最初思ったのですが、もとの数式が絶対参照相対参照混在だった
ので、最初に入力した式を下方向へコピーして使用するものでは?と思い至り、
一度提案した式を削除したのでした。
で、こんな式かな、と。
 
=IF(COUNTIF($F$5:$O$5,TRUE),HLOOKUP(TRUE,$F$5:O6,ROW(A2),FALSE)/AC15*100,0)
 
LOOKUPさんの、OR関数の使い方が良いですね。
(みやほりん)(-_∂)b

 あれ、もう一個載せといたと思ったけど、なくなってる。。。
んー。色々出てるから まっ、いっか〜。
載せ忘れかも知れないし、保存してなかったし。
(sin)

(たいへい)です。
アメリカ ジョージアから御質問させて頂きました。日本とは昼と夜が反対なので投げかけっぱなしになってしまい、御礼と返事が遅くなり大変失礼致しました。こんなに早くまた、沢山の先生に御回答頂けているとは思わず感激致して降ります。

最初に(LOOKUP)さんが作って下さった物でうまく行きました。しかし、確かに(みやほりん)さんのお考えの通り飛び飛びですが下に55行コピーして使用したいと思って降りました。(みやほりん)さんの作って頂いたものでもうまく行きました。*(みやほりん)さん せっかく考えて下さっているのに返事をしていませんでした。お詫び致します。

他、先生方の関数でも出来ました。教えて頂いた関数ですが難しく理解するのには時間が掛かると思いますがしっかり勉強致します。また、(P)さん(sin)さんの御説明にも有りましたがいろんな制限がある事も今後大変参考になりました。皆様、本当に有難う御座いました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.