チョコミントアイス

 こんにちは。教えて下さい

 ある範囲(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))))))))))

 最後の閉じ括弧の数は正確ではありませんが(汗)、実際にはきちんと合わせました。
 ところがエラーが出てしまうのです。入れ子の階層数に制限があるのでしょうか? それとも他に原因が?
 そもそもこんな長い数式ではなく、もっとうまい方法があるような気もするのですが・・・。
 よろしくお願いいたします。

A 回答 (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~に分けています。)
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/04/17 09:30

こんにちは。

maruru01です。

こんな方法もあります。

=INDEX({2,3,4,5,6,8,11,15,20,30,0},COUNTBLANK(C4:L4)+1)
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/04/17 09:27

=CHOOSE(COUNTBLANK(C4:L4)+1,2,3,4,5,6,8,11,15,20,30,0)


これで表示できます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/04/17 09:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!