- ベストアンサー
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)))))))))) 最後の閉じ括弧の数は正確ではありませんが(汗)、実際にはきちんと合わせました。 ところがエラーが出てしまうのです。入れ子の階層数に制限があるのでしょうか? それとも他に原因が? そもそもこんな長い数式ではなく、もっとうまい方法があるような気もするのですが・・・。 よろしくお願いいたします。
- みんなの回答 (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~に分けています。)
その他の回答 (2)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 こんな方法もあります。 =INDEX({2,3,4,5,6,8,11,15,20,30,0},COUNTBLANK(C4:L4)+1)
お礼
ありがとうございました。そうかINDEXってこうやって使うのか。私もまだまだ勉強不足ですなあ。
- mshr1962
- ベストアンサー率39% (7417/18945)
=CHOOSE(COUNTBLANK(C4:L4)+1,2,3,4,5,6,8,11,15,20,30,0) これで表示できます。
お礼
ご回答ありがとうございます。そうそう、こういう風にデータから選び出す関数が欲しかったんです。助かりました。
お礼
ありがとうございます。やはり入れ子の数に制限があったのですね。初めて知りました。そんなことどこにも書いてないもんなあ。まったくマイクロソフトのヘルプはヘルプの役に立ちません(笑)。