• ベストアンサー

論理関数、IFとANDを組み合わせた場合

いきなりですが・・・ =if(and(b11=0,b12+b13+b14+b15+b16=1),e7,if(and(b11=0,b12+b13+b14+b15+b16=2),e7*1/2,if(and(b11=0,b12+b13+b14+b15+b16=3),e7*1/3,if(and(b11=1,B12+b13+b14+b15+b16=1),e7*1/2,if(and(b11=1,B12+b13+b14+b15+b16=2),e7*1/4という具合で数式を入れていましたが、この流れで、30回くらい?繰り返し入力していたら、途中から急に貴方の関数は間違いです的な感じで数式が反映されなくなりました。 WORDみたいにある程度の入力したら、それ以上は無理という決まりがExcelにもあるのでしょうか? 何回も見直しましたが、私の入力ミスは見当りません。 誰か具体的な解答を教えていただけませんか? 因みに、ほとんどExcelに関しては素人です。 上記の数式?くらいなら反映されるのですが・・・。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

>Excelにもあるのでしょうか こんなの具体的には一々知らないけれど、コンピュター関連での常識。 いまさら質問されることに驚く。 数の桁数(マシン語レヴェル)から始まって、諸所にすべて仕様上の制約があります。プログラムを作る言語上の制約、出来上がったソフト上の制約など。 どんなソフトでもあります。しつこいので解説書などには、書いてない場合が多いだけです。 WEBででも調べてみたら。例 Googleで「エクセル 関数 制限」で照会など。 エクセルでの一端は http://www.relief.jp/itnote/archives/000579.php 関数に設定できるネストレベル 7 http://asugi23.web.infoseek.co.jp/excel/soft33.htm の4 論理関数の併用とネストの制限 (2003まで) バージョンによって違う場合があるので面倒です(特に2007で変化したものがある)。 AND関数は30個までです。SUM関数も30個までです。(2003まで) IFのネスト数とSUMの引数の制約は該当頻度が多く有名です。 他に関数では、範囲指定出来る列が1列だけとか、ほとんどの関数に 制約があります。 ーー 質問の式は、常軌を逸しているぐらい長い。解説書など見て、異常に長いという感覚をもち、その場合何か他の方法が無いか調べるように すべきです。本件もそれですが。 =SUM()で置き換える部分もある(同列で連続したセルの加算は =SUM(B12:B16)とか。 ーー 一度関数の本を読むとか、スクールに行って、系統だって勉強する 必要があると思う。自己流でここまで来たのだと思うが。 さらに言えば、場合分けが自由なVBA(を使ってのユーザー関数)などを勉強されるのが良い。

3kingsF
質問者

お礼

ご返信ありがとう御座います。 >他に関数では、範囲指定出来る列が1列だけとか、ほとんどの関数に 制約があります。 常識なんですね!?確かに自己流です。一昨日から使い始めました。 >一度関数の本を読むとか、スクールに行って、系統だって勉強する 必要があると思う。 時間があればそうしたいと思います。 今、時間が中々なく、目的を達成する為にその部分の理解がどうしても必要でしたので、ここを利用させていただきました。 わかりやすいお返事誠にありがとうございました。

その他の回答 (4)

  • michi_001
  • ベストアンサー率32% (21/65)
回答No.4

どうしてもIF関数で進めたい場合(無理にとはいいませんが) >=if(and(b11=0,b12+b13+b14+b15+b16=1),e7,if(and(b11=0,b12+b13+b14+b15+b16=2),e7*1/2,if(and(b11=0,b12+b13+b14+b15+b16=3),e7*1/3,if(and(b11=1,B12+b13+b14+b15+b16=1),e7*1/2,if(and(b11=1,B12+b13+b14+b15+b16=2),e7*1/4 =if(and(b11=0,b12+b13+b14+b15+b16=1),e7,"") &if(and(b11=0,b12+b13+b14+b15+b16=2),e7*1/2,"") &if(and(b11=0,b12+b13+b14+b15+b16=3),e7*1/3,"") &if(and(b11=1,B12+b13+b14+b15+b16=1),e7*1/2,"") &if(and(b11=1,B12+b13+b14+b15+b16=2),e7*1/4,"")…  (見やすいようにあえて改行してます) のように、& で1個1個つなげていけば出来ないことは無いですし、ネストされていないのでいくつでもつなげられます。 まぁ、規則性を見つけて簡略化させる方が「スッキリ」しますが、後で何かしらの修正があったときに比較的悩まないでいけるのかな、こっちの方が…?

3kingsF
質問者

お礼

裏技的な指南ありがとう御座います。 前者の方々の簡単な数式を作れるよう計算しなおして、どうしても数式が短くできない時に利用させてもらいます。 ありがとうございました。

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

具体的な解答< には説明が不足していますが、見えている限りでは =e7/((b11+1)*sum(b12:b16)) とか? =e7/((2^b11)*sum(b12:b16)) とか? 仮にもっと複雑なんだとしても、 規則性のある範囲毎に、条件分岐すればいいのでは? 少数以下どれ位の精度を求めるか、によっても式の建て方は変わるので、 「演算誤差」を無視した場合の話ってことになります。

3kingsF
質問者

お礼

>sum(b12:b16) の使い方すら知りませんでした。 面倒省けそうでこういう回答助かります。 ありがとう御座いました。

  • t-yamada_2
  • ベストアンサー率40% (587/1460)
回答No.2

Excel2003だとネスト(分岐)は7回までのようです。 8回以上は以下参照して下さい。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1315105958

3kingsF
質問者

お礼

参考になりました。 ありがとうございます。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆ネスト(関数の引数の中で関数を使う)が最大7つです ◆それに制限されているとおもいます ★Excel2007ではもっと多くなっているようです ★式を見直すか、VLOOKUP関数などの換算表なども検討されてはいかがでしょうか

参考URL:
http://www.relief.jp/itnote/archives/000579.php
3kingsF
質問者

お礼

みなさんの回答で制限されていることがわかりました。 スッキリしました。先に進めます。ありがとう御座いました。

関連するQ&A

  • excelのand関数、IF関数について

    エクセルのand関数、IF関数について質問です。 非常に簡単なことで申し訳ないのですが、仮にセルA2が5でかつセルB2が0の時にtrueとしたいときの関数は=and(A2=5,B2=0)であっているでしょうか。また、これをIFの関数で表す場合、=IF(A2=5,IF(B2=0,1,0),0)で同じ意味になるでしょうか?(IFの方は条件を満たす場合を1、満たしていない場合を0としたつもりです) ANDの方の関数は、多分合っていると思うのですが…。エクセルに入力しても、正しい結果が得られなかったので、質問させていただきました。初心者です。つまらない質問で申し訳ないのですが、よろしくお願いします。 

  • エクセルの関数について(IF,AND関数)

    エクセルでIF,ANDを用いた関数計算の数式を作っているのですが、うまく出来ません。 どなたか詳しい方、教えて下さい。 たとえばこんな感じです。 ※条件は2個 ●第1条件~東京、大阪、北海道(3パターン) ●第2条件~数値の大小(3パターン) この2個の条件を満たす値、全部で9種類の計算パターンを実行できる数式を作ろうと思っています。 あともう1条件(IF文)入れたいのですが、これ以上入れると計算しません。 =IF(AND(B22>5000,B5="東京"),111,IF(AND(B22>=2000,B5="東京"),ROUND(300*B22^2/1000,4),IF(AND(B22<2000,B5="東京"),222,IF(AND(B22>5000,B5="大阪"),333,IF(AND(B22>=2000,B5="大阪"),ROUND(300*B22^2/1000,4),IF(AND(B22<2000,B5="大阪"),444,IF(AND(B22>5000,B5="北海道"),555,666)))))))

  • エクセル関数=IF(AND())で質問します。

     初めまして、よろしくお願いします。 エクセルで     A    B    C    D    E    F 1   1   10   5   3    4  2            ・ 3            ・ このような表にB1、C1、D1三つの値の内一つでもE1より2倍以上の値がある場合にA1の値を抜き出す関数をF1に入力したいのですが、関数式 =IF(AND((B1)>=E1*2),A1,"") までは解るのですが、B1のみではなく、B1からD1までの範囲をどのようにすればいいのか解りません。  解る方、よろしくお願いします。

  • IF(AND(関数でお知らせください

    IF(AND(関数でお知らせください ウオーキングのキロ数を出すため=IF(AND(Z12>63,Z12<72),"大館市",のように組み、同様にして到着地点を7箇所まで設定し、最後は""でくくり問題ないのですが、というより8箇所目からは「入力した数式は正しくありません」とコメントが出るので、さらに次の7箇所を今まで使っていた距離数、箇所を訂正しなおして使っていましたが、箇所設定には限度というものがあるのでしょうか、他に原因があるようにも思えるのですが関数をよく理解できていませんのでご教示のほどよろしくお願いいたします。

  • if(and)関数の数が8番目になるとエラーが出ます。

    関数の初心者です。宜しくお願い致します。 Excel2000使用 セルB1に下記の様な関数を15個入れていようとしていますが、7個までは問題なくなく正しく計算されます。8個目を入れますとエラーが出てきた進む事が出来ません。エラーの原因はどこにあるのでしょうか? ご指導願います。 =IF(AND(A1>=0,A1<=650999),0,IF(AND(A1>=651000,A1<=1618999),A1-650000,IF(AND(A1>=1619000,A1<=1619999),969000,IF(AND(A1>=1620000,A1<=1621999),970000,IF(AND(A1>=1622000,A1<=1623999),972000,IF(AND(A1>=1624000,A1<=1627999),974000,IF(AND(A1>=1628000,A1<=1799999),ROUNDDOWN(A1/4,-3)*2.4,))))))) ※ここまで7個は問題なく計算されます。 その後に8個目↓を入れますとエラーが出ます。 IF(AND(A9>=1800000,A9<=1999999),ROUNDDOWN(A9/4,-3)*2.8-60000) エラーは“入力した数式はエラーがあります。ヘルプ・・・・、数式を入力していない場合は(=)(-)を使用しないか・・・・” 確認した事は、 1.閉じ括弧「)」や「,」の確認 - 漏れはありませんでした。 2.7番と8番(ROUNDDOWNのついているもの)のみ、別のセルに移して見たら、エラーが出ず正常に作動します。 一つのセルに入力できる関数の数または、一つのセルに対する字数に制限されているのでしょうか? もしそうであれば、別な方法はありますか? 宜しくお願い致します。

  • IF関数ですが・・・

    簡単な質問で恐縮ですが 例えば25~30の間であれば○そうでなければ×という 関数を設定したいのですが =IF(E4>=25+AND(E4<=30),"○","×")では違うみたいです 正しい数式を教えてもらえないでしょうか よろしくお願いします

  • if関数とAND関数の使い方

    エクセルのif関数とANDをつかって複数条件を設定したいのですが、上手く行かずに困っています。 D13のセルの値が以下の場合 29以下なら”1” 30以上34以下なら”2” 35以上39以下なら”3" 40以上44以下なら"4" 45以上なら"5" そこで、次のように式を作ってみたのですが、 「この関数に対して多すぎる引用が入力されています。」とエラーがでてしまいます。 どなたか、お詳しい方、教えていただけたら幸いです。 お願い致します。 =IF(IF(D13<=45,"5"),AND(D13>=40,D13<=44),"4",IF(AND(D13>=35,D13<39),"3",IF(AND(D13>=30,D13<34),"2",IF(D13>=29,"1")))))

  • if and 関数について

    もう少し簡単なIF関数ならわかるのですが、数式の中での計算はしたことがなく、数式方法を見ても理解できなくて大変困っています。。 IF((BB17=7),$F17×$O17,IF(AND($Q17<=●,$Q17>=●),$F17×$O17×($AA$4-$Q17)/30,″ ″)) ※●は数字が入ります 普段仕事で使われている方、もしくは詳しい方!この数式方法の入れ方を教えて下さい(;_;) 仕事でこれから使うことになるので本当に困っています。。

  • エクセルのIF関数でORとANDの組み合わせ方

    エクセルのIF関数でORとANDの組み合わせ方を教えてください。 =IF(AND(C1>10,A1>B1),"S","") =IF(AND(C1>10,A1<B1),"L","") この2つの式をORで1つの式にするにはどのように組み合わせれば良いのでしょうか? よろしくお願いいたします。

  • エクセルのIF関数について

    エクセルの数式でIFを使って、下記のような複数の条件の時に、それぞれの計算結果を算出する式を作りましたが、単純に条件を並べただけで(IFとAND使用)、式が長くなってしまいます。これを短く出来る式の方法はありますでしょうか?(他の関数を使用する方法など)また、エクセルの関数の数式を応用編まで詳しく調べられるサイトをご存知でしたら教えてください。 (条件の例)R1への式入力 (1)A1がに"A"か"B"かを入力 (2)A1がAで、B2の値がC3以下の時、R1には8、C3より大きい場合は、B2-C3の値を表示 (3)A1がBで、B2の値がC3以下の時、R1には5、C3より大きい場合は、(B2-C3)/2の値を表示 といった条件を満たすものが作成したいです。 ちなみに私が作成した式は、 =IF(AND(A1=A,B2<=C3),8),IF(AND(A1=A,B2>C3),B2-C3,・・・・)って感じです。こんな方法しか無いでしょうか?

専門家に質問してみよう