• 締切済み

IF関数の複数分岐

IF関数の複数分岐について質問です。 条件が多すぎて私の知識では手に負えない状態なので、どなたか教えてくださると助かります。 ・A1が○だったら● ・A1が△、かつB1が▽だったら▲÷2 ・A1が△、かつB1が□だったら▲÷4 ・上記のどれにも当てはまらない場合は0 この条件でどうにかifでクリアできませんでしょうか? それに加えて、求められた値を四捨五入し1000の位で丸めたい(単位を千)にしたいのです。 どなたか宜しくお願いいたします。

みんなの回答

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.11

こんにちは、#1です。  >○●の計算と0しか表示されませんでした。  つまり、条件1の時は正解が出たけど、条件2や3の時に、▲÷2や▲÷4にならないと言うことでしょうか。  原因が分からないので、私の環境での計算結果を書きます。貴方の環境での計算結果を返信してください。  A1  B1  C1   1      212000   3   4   258000   3   7   205000   他     0  もしくは、貴方が試された実際の数式を教えてください。 では。

moffet
質問者

お礼

こんにちは☆どうもありがとうございます。 私の入力した式を返信します。 =ROUND(IF(B7="○",I7,IF(AND(B7="△",L7="▽"),H7/2,IF(AND(B7="△",L7="□"),H7/4,0))),-3)/1000 ▽と□をセル絶対参照で固定をしましたらきちんと計算されました。 詳しく教えてくださいまして、誠にありがとうございます。 とても助かりました☆

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.10

こんにちは、#1です。  ROUNDで書き直しました。  =ROUND(IF(A1=1,212121,IF(AND(A1=3,B1=4),515151/2,IF(AND(A1=3,B1=7),818181/4,0))),-3)  「-3」という引数(ひきすう)で、小数点の左側(整数部分)の3桁目(1の位を 0とする)で四捨五入されます。 では。

moffet
質問者

お礼

考えてくださってありがとうございます。 エラーは消えましたが、○●の計算と0しか表示されませんでした。

noname#140971
noname#140971
回答No.9

中途まで書きかけていた残りです。 C1=IF(A1=10,1,IF(AND(A1=20,B1=20),2,IF(AND(A1=20,B1=40),3,0))) D1=IF(C1=1,20,IF(C1=2,20,IF(C1=3,10,0))) C1を介することで、1ならば、2ならば、3ならばとIFのネストも簡略化します。 途中のケースを視認できるので処理内容が目で確認できます。 私は、複雑な法人税の計算書なんかでは、この手を多用しています。

回答No.8

エクセルなら、A1 に数値(1234567)を入れて、 B1 で、=1000*INT(A1/1000+0.5) にすると、 (1235000) になりますよ。

回答No.7

御免なさい。四捨五入を忘れていました。  X=1000.0*int(X/1000.0+0.5)

回答No.6

C 言語では、 if(A1==△ && B1==▽)    x=▲/2 if(A1==△ && B1==□)    x=▲/4 else    X=0 X=1000.0*int(X/1000.0)

moffet
質問者

お礼

どうもありがとうございます。 私の知識不足でしょうが、C言語とは何でしょう? 数式で表していただけると助かります。

noname#140971
noname#140971
回答No.5

ケース1、A1が10だったら20 ケース2、A1が20、かつB1が20だったら40÷2 ケース3、A1が20、かつB1が40だったら40÷4 ケース4、上記のどれにも当てはまらない場合は0 Excel は一度も操作したことがない門外漢ですが・・・。 A___B___C___D 10_20___1___20 20_20___2___20 20_40___3___10 15_15___0____0 一応、D は求める結果になっています。 D=(C1=1)*20+(C1=2)*20+(C1=3)*10 (C1=1)*20・・・ケース1ならば20 (C1=2)*20・・・ケース2ならば40÷2=20 (C1=3)*10・・・ケース3ならば40÷4=10 ケース4は、式に含んでいないので0 まあ、質問者の条件設定のまんまです。 if(C1=1,20,if(C1=2,・・・・ と書くことも可能なのは言うまでもないです。 C=(A1=10)+(A1=20)*(B1=20)*2+(A1=20)*(B1=40)*3 一旦、ケースを判定する列を用意すると簡略化できますよ。 ステップバイステップだから、何よりもミスが避けられます。

moffet
質問者

お礼

どうもありがとうございます。 私の知識不足でしょうが、よくわかりませんでした(>_<) 関数を使用した数式で表していただけると助かります。

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.4

こんにちは、#1です。  INTだと切り捨てでした。皆さんの書いているようにROUNDにしてください。 では。

moffet
質問者

お礼

ありがとうございます。入力をしてみましたが、エラーになってしまいました。少なすぎる因数が含まれてるとのことです。 )))/1000の"1000”の部分がエラーみたいです。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

ご質問文をIF関数で表現すると次の様になりますが如何でしょうか。 =IF(A1="○","●",IF(AND(A1="△",B1="▽"),ROUND(▲/2/1000,0),IF(AND(A1="△",B1="□"),ROUND(▲/4/1000,0),0)))

moffet
質問者

お礼

ありがとうございました☆参考にさせていただきます。 入力をしてみましたが、最初の計算しかされない(○●の計算)状態です。どうしたらいいのでしょうか?

  • Turbo415
  • ベストアンサー率26% (2631/9774)
回答No.2

ここで言う○、●、△、▲、□は全部数字ですよね。文字だとすると、それぞれを"●"のようにダブルコーテーションで囲まないとエラーになります。まあ、if関数の入れ子とand関数、round関数の組み合わせですね。1000を1としたいので最後に1000で割っていますが。 =ROUND(IF(A1=○,●,IF(AND(A1=△,B1=▽),▲/2,IF(AND(A1=△,B1=□),▲/4,0))),-3)/1000 こんなかんじでどうでしょうか?

moffet
質問者

お礼

ありがとうございます。入力してみました。 が・・・IF(AND(A1=△,B1=□),▲/4のところが計算されませんでした。。。 考えてくださいましてありがとうございました。

関連するQ&A