• ベストアンサー

EXCELのIF関数で

 こんにちは。教えて下さい  ある範囲(C4:L4とします)の中にある空白の数によって、一定の数を返すような数式を作りたいのです。空白の数が、0で2、1で3、2で4、3で5、4で6、5で8、6で11、7で15、8で20、9で30、10で0という具合で、規則性はありません。IF関数とCOUNTBLANK関数を使って、次のような入れ子構造の数式を作りました。  =IF(COUNTBLANK(C4:L4)=0,2,IF(COUNTBLANK(C4:L4)=1,3,IF(COUNTBLANK(C4:L4)=2,4,IF(COUNTBLANK(C4:L4)・・・中略・・・IF(COUNTBLANK(C4:L4)=9,30,0))))))))))  最後の閉じ括弧の数は正確ではありませんが(汗)、実際にはきちんと合わせました。  ところがエラーが出てしまうのです。入れ子の階層数に制限があるのでしょうか? それとも他に原因が?  そもそもこんな長い数式ではなく、もっとうまい方法があるような気もするのですが・・・。  よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

うまい方法については、#1、#2さんが回答されていますので 参考に、関数の入れ子(ネスト)について説明します。 関数の入れ子は最大で7つまでしか出来ないようです。 上記質問の方法では、10個位の入れ子になっていると思いますが、 =IF(COUNTBLANK(C4:L4)<6,IF(COUNTBLANK(C4:L4)=0,2,IF(COUNTBLANK(C4:L4)=1,3,IF(COUNTBLANK(C4:L4)=2,4,IF(COUNTBLANK(C4:L4)=3,5,IF(COUNTBLANK(C4:L4)=4,6,8))))),IF(COUNTBLANK(C4:L4)=6,11,IF(COUNTBLANK(C4:L4)=7,15,IF(COUNTBLANK(C4:L4)=8,20,IF(COUNTBLANK(C4:L4)=9,30,0))))) のように、場合分けすると、1つづつ書いても作れます。 (この例では、~5までと、6~に分けています。)

kobarn
質問者

お礼

 ありがとうございます。やはり入れ子の数に制限があったのですね。初めて知りました。そんなことどこにも書いてないもんなあ。まったくマイクロソフトのヘルプはヘルプの役に立ちません(笑)。

その他の回答 (2)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 こんな方法もあります。 =INDEX({2,3,4,5,6,8,11,15,20,30,0},COUNTBLANK(C4:L4)+1)

kobarn
質問者

お礼

 ありがとうございました。そうかINDEXってこうやって使うのか。私もまだまだ勉強不足ですなあ。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

=CHOOSE(COUNTBLANK(C4:L4)+1,2,3,4,5,6,8,11,15,20,30,0) これで表示できます。

kobarn
質問者

お礼

 ご回答ありがとうございます。そうそう、こういう風にデータから選び出す関数が欲しかったんです。助かりました。