- 締切済み
エクセルの数式について
=IF(N2<36,IF(T2<24,IF(Z2<10,IF(AL2<600,6.5,IF(AL2<800,7,IF(AL2>=800,7.5))),IF(Z2<14,IF(AL2<500,6.5,IF(AL2<700,7,IF(AL2>=700,7.5))),IF(Z2<19,IF(AL2<450,6.5,IF(AL2<650,7,IF(AL2>=650,7.5))),IF(Z2>=19,IF(AL2<375,6.5,IF(AL2<525,7,IF(AL2>=525,7.5))))))))) このような関数を入力したのですが、エラー表示が出ます。数式の内容について説明は省かせて頂きますが、「()」等に間違いがあるのでしょうか?分かりづらい質問で申し訳ありませんが、お答えお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
IFのネストが多すぎることもありますが、意味のないIFもあります。 例えば IF(AL2<800,7,IF(AL2>=800,7.5)) は IF(AL2<800,7,7.5) で充分です。 またIFでなくともこの部分に限っていえば 7+(AL2>=800)*0.5 とも書けます。 これは、7+IF(AL2>=800,0.5,0)と等価です。 なににしても、IFを多重化すると複雑になり、さらに条件外の時の処理が見えにくくなるので、思わぬ落とし穴に落ちることもあります。 #2さんが指摘されているように、AL2の値のレンジ分けがキーになりそうですね。
- zap35
- ベストアンサー率44% (1383/3079)
IFの入れ子の数が多すぎることもさることながら、IF文の構文がおかしいです。 =IF(条件,Trueの動作,Falseの動作) ですが、Falseの動作が書かれていません。 こんな方法はどうでしょうか。まず別シート(Sheet2)にこんな表を作成します A列 B列 C列 D列 1行目 6.5 7 7.5 2行目 0 0 600 800 3行目 10 0 500 700 4行目 14 0 450 650 5行目 19 0 375 525 その上で質問の式は以下でできそうです =IF(N2<36,IF(T2<24,INDEX(Sheet2!B1:D1,MATCH(AL2,OFFSET(Sheet2!B1,MATCH(Z2,Sheet2!A2:A5,1),0,1,3),1)),""),"")
- abemalia
- ベストアンサー率40% (4/10)
IFの内子(NEXT)が多すぎます、7つまで?のはずです。
お礼
「()」のことですよね? 迅速な回答有難うございます。
お礼
大変参考になりそうな関数を入れて考えて頂き感謝します。 素人のため、時間をかけて理解したいと思います。 有難うございました。