• 締切済み

エクセルの数式について

=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))))))))) このような関数を入力したのですが、エラー表示が出ます。数式の内容について説明は省かせて頂きますが、「()」等に間違いがあるのでしょうか?分かりづらい質問で申し訳ありませんが、お答えお願い致します。

みんなの回答

noname#79209
noname#79209
回答No.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)
回答No.2

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)),""),"")

shimishinn
質問者

お礼

大変参考になりそうな関数を入れて考えて頂き感謝します。 素人のため、時間をかけて理解したいと思います。 有難うございました。

  • abemalia
  • ベストアンサー率40% (4/10)
回答No.1

IFの内子(NEXT)が多すぎます、7つまで?のはずです。

shimishinn
質問者

お礼

「()」のことですよね? 迅速な回答有難うございます。

関連するQ&A