- 締切済み
IF関数の複数分岐
IF関数の複数分岐について質問です。 条件が多すぎて私の知識では手に負えない状態なので、どなたか教えてくださると助かります。 ・A1が○だったら● ・A1が△、かつB1が▽だったら▲÷2 ・A1が△、かつB1が□だったら▲÷4 ・上記のどれにも当てはまらない場合は0 この条件でどうにかifでクリアできませんでしょうか? それに加えて、求められた値を四捨五入し1000の位で丸めたい(単位を千)にしたいのです。 どなたか宜しくお願いいたします。
- みんなの回答 (11)
- 専門家の回答
みんなの回答
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは、#1です。 >○●の計算と0しか表示されませんでした。 つまり、条件1の時は正解が出たけど、条件2や3の時に、▲÷2や▲÷4にならないと言うことでしょうか。 原因が分からないので、私の環境での計算結果を書きます。貴方の環境での計算結果を返信してください。 A1 B1 C1 1 212000 3 4 258000 3 7 205000 他 0 もしくは、貴方が試された実際の数式を教えてください。 では。
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは、#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とする)で四捨五入されます。 では。
お礼
考えてくださってありがとうございます。 エラーは消えましたが、○●の計算と0しか表示されませんでした。
中途まで書きかけていた残りです。 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のネストも簡略化します。 途中のケースを視認できるので処理内容が目で確認できます。 私は、複雑な法人税の計算書なんかでは、この手を多用しています。
- fuuraibou0
- ベストアンサー率36% (75/208)
エクセルなら、A1 に数値(1234567)を入れて、 B1 で、=1000*INT(A1/1000+0.5) にすると、 (1235000) になりますよ。
- fuuraibou0
- ベストアンサー率36% (75/208)
御免なさい。四捨五入を忘れていました。 X=1000.0*int(X/1000.0+0.5)
- fuuraibou0
- ベストアンサー率36% (75/208)
C 言語では、 if(A1==△ && B1==▽) x=▲/2 if(A1==△ && B1==□) x=▲/4 else X=0 X=1000.0*int(X/1000.0)
お礼
どうもありがとうございます。 私の知識不足でしょうが、C言語とは何でしょう? 数式で表していただけると助かります。
ケース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 一旦、ケースを判定する列を用意すると簡略化できますよ。 ステップバイステップだから、何よりもミスが避けられます。
お礼
どうもありがとうございます。 私の知識不足でしょうが、よくわかりませんでした(>_<) 関数を使用した数式で表していただけると助かります。
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは、#1です。 INTだと切り捨てでした。皆さんの書いているようにROUNDにしてください。 では。
お礼
ありがとうございます。入力をしてみましたが、エラーになってしまいました。少なすぎる因数が含まれてるとのことです。 )))/1000の"1000”の部分がエラーみたいです。
- mu2011
- ベストアンサー率38% (1910/4994)
ご質問文をIF関数で表現すると次の様になりますが如何でしょうか。 =IF(A1="○","●",IF(AND(A1="△",B1="▽"),ROUND(▲/2/1000,0),IF(AND(A1="△",B1="□"),ROUND(▲/4/1000,0),0)))
お礼
ありがとうございました☆参考にさせていただきます。 入力をしてみましたが、最初の計算しかされない(○●の計算)状態です。どうしたらいいのでしょうか?
- Turbo415
- ベストアンサー率26% (2631/9774)
ここで言う○、●、△、▲、□は全部数字ですよね。文字だとすると、それぞれを"●"のようにダブルコーテーションで囲まないとエラーになります。まあ、if関数の入れ子とand関数、round関数の組み合わせですね。1000を1としたいので最後に1000で割っていますが。 =ROUND(IF(A1=○,●,IF(AND(A1=△,B1=▽),▲/2,IF(AND(A1=△,B1=□),▲/4,0))),-3)/1000 こんなかんじでどうでしょうか?
お礼
ありがとうございます。入力してみました。 が・・・IF(AND(A1=△,B1=□),▲/4のところが計算されませんでした。。。 考えてくださいましてありがとうございました。
- 1
- 2
お礼
こんにちは☆どうもありがとうございます。 私の入力した式を返信します。 =ROUND(IF(B7="○",I7,IF(AND(B7="△",L7="▽"),H7/2,IF(AND(B7="△",L7="□"),H7/4,0))),-3)/1000 ▽と□をセル絶対参照で固定をしましたらきちんと計算されました。 詳しく教えてくださいまして、誠にありがとうございます。 とても助かりました☆